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 } 
+0

感谢了很多人! –