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

IT技术 javascript node.js ecmascript-6
2021-03-02 13:06:58

使用 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'));

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

谢谢

1个回答

如评论中所述,将一个函数传递给该函数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')});