我想抓住Javascript異步函數和回調。默認爲Javascript同步(阻止)或異步(非阻塞)
我陷入了回調函數的概念,在某些地方我正在閱讀它們:它們用於順序執行代碼(主要在jquery的上下文中,例如動畫)和一些特別在Nodejs上下文中的地方;它們用於並行執行異步並避免代碼的阻塞。
因此,在這個主題的一些專家請澄清這一點,並清除我腦海中的這個模糊(例子??)。 所以我可以讓我的腦海回調函數的用法
或者說是完全取決於你在哪裏調用/放置一個回調函數在代碼的地方嗎? 。
感謝,
PS:我很害怕,這個問題將是接近主觀的,但我依然可以期待這個具體的答案(也許是一些例子)
編輯:其實這是例如,從互聯網這讓我ambigous:
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的;它取決於上下文,用法,引擎等。 – 2013-05-13 14:00:00
你能否提供一些你不確定它是否阻塞與非阻塞的示例代碼? – Matt 2013-05-13 14:06:11
JavaScript通常是同步的,但根據定義,setTimeout是異步的。這裏有一個很好的入門知識:https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout – 2013-05-13 14:25:02