然后()回调发射之前承诺解决在node.js

然后()回调发射之前承诺解决在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事件循环回调?

感谢

+1

因为你打电话吧....并赋予它返回给当时。 – epascarello

+1

您是否尝试过没有明确调用bar(又名删除'()')? – larz

+1

每当你有'x(y())','y'被称为* first *并且它的返回值被传递给'x'。这与'.then',承诺或事件循环无关。 *总是*热切地评价参数。 –

正如评论指出,通过一个功能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')});