分塊的程序
可以把JavaScript 程序?qū)懺趩为毜膉s 文件中,這個程序是由多個塊組成的,這些塊
中只有一個是現(xiàn)在執(zhí)行,其余在撿來執(zhí)行,最常見的塊單位是函數(shù)。
例如:
function now() { return 21; } function later() { answer = answer * 2; console.log("Meaning of life:", answer); } var answer = now(); setTimeout (later,1000); // Meaning of life: 42 現(xiàn)在: function now() { return 21; } function later() {...} setTimeout(later,1000); setTimeout(later,1000); 將來: answer = answer * 2; console.log("Meaning of life:", answer);
異步控制臺
事件循環(huán)
并行線程
異步是現(xiàn)在和將來的時間間隙,而并行是關(guān)于能同時發(fā)生的事情。
并行計算最常見的的工具就是進程和線程,并行和線程獨立運行,并可能同時運行,
在不同的處理器,甚至不同的計算機上,但多個進程能夠共享單個進程的內(nèi)存。
并發(fā)
兩個或多個“進程”同時執(zhí)行就出現(xiàn)了并發(fā),不管組成他們的單個運算是否并行執(zhí)行
可以把并發(fā)看作“進程”及的并行,與計算級的并行相對。
非交互
兩個或多個“進程”在同一個程序內(nèi)并發(fā)地交替運行它們的步驟/事件時,如果這些任務(wù)彼此不相關(guān),就不一定需要交互。
交互
更常見的情況是,并發(fā)的“進程”需要相互交流,通過DOM 間交互。
協(xié)作
取到一個長期運行的進程,并將其分割成多個步驟或多批人,使其他并發(fā)“進程”有機會將自己的運算插入到事件循環(huán)隊列中交替運行。
任務(wù)
掛在事件循環(huán)隊列的每個tick 之后的一個隊列,在事件循環(huán)的每個tick 中,可能
出現(xiàn)異步動作不會導(dǎo)致一個完整的新事件添加到新事件中,而會在當(dāng)前的tick 的任務(wù)隊列末尾添加一個項目。
語句順序
代碼中語句的順序和JavaScript 引擎執(zhí)行語句的順序并不一定一致。
JavaScript 引擎在編譯這段代碼之后,可能會發(fā)現(xiàn)通過重新安排這些語句的順序有可能提過速度。
回調(diào)
continuation(延續(xù))
順序的大腦
執(zhí)行與計劃
嵌套回調(diào)與鏈?zhǔn)交卣{(diào)
信任問題
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com