然后()回调发射之前承诺解决在node.js
问题描述:
使用node.js版本7.7.2,我想执行一个异步功能,然后不同的功能,一旦第一个功能已完成这样的:然后()回调发射之前承诺解决在node.js
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'));
的问题是,这种设置打印“栏已经解雇”其次是“foo是要解决”。我期望的是,酒吧会等到火,直到foo返回的承诺解决。我误解了如何()排队在node.js事件循环回调?
感谢
答
正如评论指出,通过一个功能then
,调用它时,将调用bar
您的PARAMS。
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')});
因为你打电话吧....并赋予它返回给当时。 – epascarello
您是否尝试过没有明确调用bar(又名删除'()')? – larz
每当你有'x(y())','y'被称为* first *并且它的返回值被传递给'x'。这与'.then',承诺或事件循环无关。 *总是*热切地评价参数。 –