Sup*_*ido 8 javascript node.js promise bluebird
我在Bluebird/Promises中遇到了一些问题.对于Promise1,如果调用fullfill或reject,一切正常.但是当我们在finally块中返回Promise2时,它只适用于reject和fullfil,我们在后面的回调中得到了未定义.
function getPromise1() {
return new Promise(function(fulfill, reject) {
fulfill("OK1");
});
}
function getPromise2() {
return new Promise(function(fulfill, reject) {
fulfill("OK2");
});
}
getPromise1()
.then(function(c){
console.log(c);
})
.catch(function(e) {
console.log(e);
})
.finally(function() {
return getPromise2();
})
.then(function(c){
console.log(c);
})
.catch(function(e) {
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
输出:
OK1
未定义
该finally块不会更改返回值.
.finally()有一些特殊的语义,因为无法从处理程序修改最终值.
Bluebird将等待它,但它不会改变返回值(这是一个自以为是的选择并与提议的ECMAScript标准语义一致 - 就像finally在某些语言中一样,与其他语言不同).
| 归档时间: |
|
| 查看次数: |
4455 次 |
| 最近记录: |