什么是異步
有些計(jì)算機(jī)程序?qū)儆谟?jì)算密集型鸥跟,即這些程序會持續(xù)不斷地運(yùn)行,不會暫停秋忙,知道計(jì)算出結(jié)果為止彩掐。不過大多數(shù)現(xiàn)實(shí)中的計(jì)算機(jī)程序則明顯是異步的。即灰追,它們嘗嘗停止計(jì)算堵幽,等待數(shù)據(jù)到達(dá)或某個(gè)時(shí)間發(fā)生。
瀏覽器中的Javascript程序時(shí)典型的事件驅(qū)動型程序弹澎,即它們會等待用戶單擊或觸發(fā)朴下,然后才能真正執(zhí)行。而基于Javascript的服務(wù)器則通常要等待客戶端通過網(wǎng)絡(luò)發(fā)送請求苦蒿,然后才能執(zhí)行操作殴胧。
這種異步編程在Javascript中是司空見慣的。
ES6中新增的Promise是一種對象,代表某一個(gè)異步操作尚不可用的結(jié)果团滥。
關(guān)鍵字async和await是ES2017中引入的竿屹,為簡化異步編程提供了新語法,允許開發(fā)者將基于Promise的異步代碼寫成同步的形式灸姊。
異步迭代器和for/await 循環(huán)是ES2018中引入的拱燃,允許在看起來同步的簡單循環(huán)中操作異步事件流。