最近碰到了異步編程的問題,決定從原理開始重新擼一遍,徹底弄懂異步編程。
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)貢嘎,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
異步編程是為了解決同步模式的一些痛點(diǎn),同步模式中任務(wù)是依次執(zhí)行,后一個(gè)任務(wù)必須要等待前一個(gè)任務(wù)結(jié)束后才能開始執(zhí)行,當(dāng)某個(gè)函數(shù)耗時(shí)過長(zhǎng)時(shí)就可能造成頁(yè)面的假死和卡頓,而異步編程中,后一個(gè)任務(wù)不會(huì)去等待前一個(gè)任務(wù)結(jié)束后才開始,當(dāng)前一個(gè)任務(wù)開啟過后就立即往后執(zhí)行下一個(gè)任務(wù)。耗時(shí)函數(shù)的后續(xù)邏輯會(huì)通過回調(diào)函數(shù)的方式定義。在內(nèi)部,耗時(shí)任務(wù)完成過后就會(huì)自動(dòng)執(zhí)行傳入的回調(diào)函數(shù)。
同步行為對(duì)應(yīng)內(nèi)存中順序執(zhí)行的處理器指令,每條指令都會(huì)嚴(yán)格按照出現(xiàn)的順序來執(zhí)行,而每條指令執(zhí)行后也能立即獲得儲(chǔ)存在系統(tǒng)本地的信息.這樣的執(zhí)行流程容易分析程序在執(zhí)行到代碼任意位置時(shí)的狀態(tài).
如下例子:
///同步模式 console.log('global begin') function bar () { console.log('bar task') } function foo () { console.log('foo task') bar() } foo() console.log('global end') // 程序打印輸出: // global begin // foo task // bar task // global end