当我链接多个 promise 时,我希望每个 promise 仅在前一个 promise 结束后执行。不知何故它不会发生。我确信使用 promises 是错误的,希望得到一些解释。
我有这个代码:
var Promise = require('bluebird');
func('A')
.then(() => {func('B')})
.then(() => {func('C')})
.then(() => {func('D')})
function func(arg) {
return new Promise(function(resolve){
console.log('>> ' + arg);
setTimeout(function(){
console.log(' << ' + arg);
resolve();
}, 200)
})
}
我期待得到这个输出:
>> A
<< A
>> B
<< B
>> C
<< C
>> D
<< D
但是,我得到了这个输出:
>> A
<< A
>> B
>> C
>> D
<< B
<< C
<< D
我哪里错了?
最佳答案
你需要返回 promise
func('A')
.then(() => {return func('B')})
.then(() => {return func('C')})
.then(() => {return func('D')})
或
func('A')
.then(() => func('B'))
.then(() => func('C'))
.then(() => func('D'))
忽略词法 this
或词法 arguments
部分,
() => {1}
转换为
function() { 1 } // return undefined
和() => 1
转换为
function() { return 1 }
关于javascript - nodeJS 中的 promise / promise /执行顺序中的回调不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709812/