2017-06-21 6 views
0

私はある計算を非同期的に行い、コールバックの計算結果を得ようとしています。複雑な計算での非同期コールバックJavascript

function customWithCallBack(callback) { 
 
\t //Complex logic calculation that takes time. 
 
    \t callback(); 
 
} 
 

 
function actualCallBack() { 
 
\t console.log("This is callback called after certain event"); 
 
} 
 

 

 
console.log("First"); 
 
customWithCallBack(actualCallBack); 
 
console.log("Second");

//Required Output 
First 
Second 
This is callback called after certain event. 


//Actual Output 
First 
This is callback called after certain event 
Second 

どのように私は必要な出力を達成することができますか? まずは「最初に印刷されました」。次に、 "Second"。 最後に複雑なロジックコールバックの完了後に、 を印刷するために呼び出されます。「これは特定のイベント後に呼び出されるコールバックです。 ネットワークreqと入出力操作以外の複雑な計算でも可能ですか?

+0

これは、このリンクによく似た質問です。https://stackoverflow.com/questions/9516900/how-can-i-create-an-asynchronous-function-in-javascript – Geono

答えて

0

function customWithCallBack(callback) { 
 
\t //Complex logic calculation that takes time. 
 
    setTimeout(function(){ callback(); }, 100); 
 
    \t 
 
} 
 

 
function actualCallBack() { 
 
\t console.log("This is callback called after certain event"); 
 
} 
 

 

 
console.log("First"); 
 
customWithCallBack(actualCallBack); 
 
console.log("Second");

+0

callback()は100の後に呼び出されますms ...私がしたいのは、複雑な論理計算の後にコールバックを実行することです...どうすればそれを達成できますか? – xerox007

+0

コールコールバックur計算が完了した後 –

0

つまり、あなたのコールバックを新しいコールスタックを開始し、その後、現在のコールスタックを終了します。これはコールバックをqeueにプッシュすることで実現でき、qeueにはトリガされたすべてのイベントハンドラとタイマーが含まれ、次々に新しいコールスタックが開始されます。したがって、次のようにすることができます:

setTimeout(callback,0,"param1","param2"); 

したがって、コールバックは現在のコールスタックが終了した後に実行されます。

関連する問題