2017-04-26 10 views
-1

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によって返された約束が解決されるまで、バーは発射を待つことです。私はthen()がnode.jsイベントループのコールバックをどのようにキューに入れるのか誤解していますか?コメントで述べたように

おかげ

+1

あなたがバーを呼び出して....そしてそれは、その後に戻って何を割り当てているので。 – epascarello

+1

明示的にバーを呼び出さずに試しましたか(別名 '()')? – larz

+1

'x(y))'があるときはいつでも、 'y'は* first *と呼ばれ、その戻り値は' x'に渡されます。これは '.then'、約束事、イベントループとは関係ありません。引数は常に*熱心に評価されます。 –

答えて

0

は、呼び出されたときに、あなたのparamsでbarを呼ぶだろう、ということthenに関数を渡します。

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')});

関連する問題