nodeJS中的承诺/承诺/执行顺序中的callback是不正确的
当我链接多个承诺时,我希望每个承诺只有在前一个承诺结束后才能执行。 不知何故,这并没有发生。 我确信使用承诺错误,并会喜欢一些解释…
我有这个代码:
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')})
要么
func('A') .then(() => func('B')) .then(() => func('C')) .then(() => func('D'))
无视词汇this
或词法arguments
部分,
() => {1}
转换为
function() { 1 } // return undefined
和() => 1
翻译成
function() { return 1 }