私はJavascriptの非同期関数とコールバックを把握しようとしています。Javascriptは同期(ブロッキング)または非同期(非ブロッキング)でデフォルトでは
私はいくつかの場所で読んでいるコールバック関数のコンセプトに悩まされています。コードの逐次実行(主にjqueryコンテキストのアニメーションなど)と特にNodejsのコンテキスト内のいくつかの場所があります。非同期で並列実行し、コードのブロックを避けるために使用されます。
このトピックのいくつかの専門家は、これに光を当てて、私の心にこの毛羽をクリアしてください(例??)。 ので、私は、コールバック関数の使い方
またはそのための私の心は、単にあなたのコードにコールバック関数を配置/呼び出している場所の場所に依存させることができますか? 。
おかげで、
PS:(おそらくいくつかの例)私はこの質問は主観近いことだろうと怖いが、それでも私はこのための具体的な答えを期待できる
編集:実際にこれがあります私が不明瞭になり、インターネットからの例:
function do_a(){
// simulate a time consuming function
setTimeout(function(){
console.log('`do_a`: this takes longer than `do_b`');
}, 1000);
}
function do_b(){
console.log('`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`');
}
do_a();
do_b();
結果
`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`
`do_a`: this takes longer than `do_b`
JSがシーケンシャルな場合、do_bは常に私の理解に従ってdo_aの後に来るべきです。
JavaScriptは、JavaScriptのです。コンテキスト、使用法、エンジンなどに依存しています –
ブロックされていないブロックとブロックされていないブロックがあるかどうか不明なサンプルコードを提供できますか? – Matt
JavaScriptは一般的に同期ですが、setTimeoutは定義上は非同期です。ここには良い入門書があります:https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout –