nodeJS中的承诺/承诺/执行顺序中的回调不正确
问题描述:
当我链接多个承诺时,我期望每个承诺只会在前一个承诺结束后执行。不知怎的,它没有发生。我敢肯定,使用错误的承诺,并为一些解释很想......nodeJS中的承诺/承诺/执行顺序中的回调不正确
我有这样的代码:
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
我得到什么错误?
答
您需要返回的承诺
func('A')
.then(() => {return func('B')})
.then(() => {return func('C')})
.then(() => {return func('D')})
或
3210忽视词汇this
或词汇arguments
部分,
() => {1}
翻译成
function() { 1 } // return undefined
和() => 1
转化为
function() { return 1 }
感谢了很多人! –