js五種非同步實現方式對比

2022-09-01 00:21:17 字數 956 閱讀 4487

最近研究了一下 koa1 和 koa2 的原始碼,其中比較重要的就是中介軟體的流程控制,其中 koa1 是通過 generator 實現中介軟體流程控制,koa2 則是通過 async 函式,說起來利用 js 實現非同步流程控制的方法也不少了,所以做一下總結對比。主要總結了五種實現方式:

具體**可以看我在 codepen 上的 demo,分別開啟各方法注釋即可。整體**如下:

下面簡單看一下最終各中方式實現**:

animate(ball1, 100, function () )

})})

})})

})

promiseanimate(ball1,100)

.then(function () )

.then(function () )

.then(function () )

.then(function () )

.then(function () )

(async function () )()
var movepromise = function* ();

run(movemovepromise) // 需要自己實現 run 函式

var movethunk = function* ();

run(movethunk) // 同樣需要自己 run 函式

callback 寫法最不直觀,當有多個連續執行非同步操作任務時,容易造成**地獄。其餘四種都是同步寫法實現非同步流程控制,其中 async 函式相當於自動執行的 promise 以及後邊的 generator 函式,如果使用 generator,需要自己實現乙個 run 函式來進行自動化執行,這裡就要提到著名的 co 庫。總的來說還是 async 不錯。

Js如何實現繼承(js實現繼承的五種方式)

js繼承有5種實現方式 1 繼承第一種方式 物件冒充 function parent username function child username,password var parent newparent zhangsan var child newchild lisi 123456 pare...

js 建立物件的9種方式對比

建立物件 原生建立方法 new func 工廠模式 優點 原生建立方法的封裝。缺點 物件型別不可知。function createfunc args var obj createfunc args 建構函式模式 優點 物件型別可知 instanceof,obj.constructor 缺點 構造了多...

JS非同步載入的三種方式

我們平時使用的最多的一種方式。同步模式,又稱阻塞模式,會阻止瀏覽器的後續處理,停止後續的解析,只有當當前載入完成,才能進行下一步操作。所以預設同步執行才是安全的。但這樣如果js中有輸出document內容 修改dom 重定向等行為,就會造成頁面堵塞。所以一般建議把 firefox 3.6 opera...