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 }