then() 在 node.js 中解决 promise 之前触发回调

All*_*ore 5 javascript node.js ecmascript-6

使用 node.js 版本 7.7.2,我想在第一个函数完成后执行一个异步函数,然后执行一个不同的函数,如下所示:

function foo() {
  return new Promise(function(resolve, reject) {
    // Do some async stuff
    console.log('foo is about to resolve');
    resolve();
  });
}
    
function bar(arg) {
  console.log(arg);
}

foo().then(bar('bar has fired'));
Run Code Online (Sandbox Code Playgroud)

问题是此设置会打印“bar 已触发”,然后是“foo 即将解决”。我期望的是 bar 会等到 foo 返回的承诺解决后才会触发。我是否误解 then() 如何在 node.js 事件循环中排队回调?

谢谢

lar*_*arz 4

正如评论中所述,将一个函数传递给then该函数,当调用该函数时,该函数将bar使用您的参数进行调用。

function foo() {
  return new Promise(function(resolve, reject) {
    // Do some async stuff
    console.log('foo is about to resolve');
    resolve();
  });
}
    
function bar(arg) {
  console.log(arg);
}

foo().then(function(){bar('bar has fired')});
Run Code Online (Sandbox Code Playgroud)