非同步函式順序執行的實現(下)

2022-03-30 23:14:12 字數 839 閱讀 3513

(這個內容很早就寫完了,放在了csdn上,把這半截忘記了。。。)

接上節。

在上面的基礎上,我們使用建構函式的方法,把**重新整理一下(結構)。

function chain()

this.next = function()

else output.innertext += '任務全部完成';

} this.start = function()

this.settimeout = function(fn, time)

this.ajax = function()

}

再寫幾個非同步的函式用於測試

function a() 

function b()

function c() , 1000);

}function d(text)

function e() ,

success: function()

})}function f() , 1000);

}

測試

var job = new chain(a, b, c, function a(), e, f);

job.start();

完整**測試頁面:

這樣算是基本的功能完成了。根據我的測試,如果要應用到具體的工作中,還是使用promise比較靠譜。而且我寫的這個函式對於ajax settimeout的操作不夠靈活,不可以巢狀,不可以混合使用。但是這些都是可以改進的,即進行更深的匹配修改。實現的本身也可以當做一種不同的思路吧。

乙個非同步讀取並展示的demo:

js非同步之間執行的順序

今天同事問了乙個問題,怎麼讓ajax中的 保持非同步 先執行,再讓普通的function執行。整了個解決辦法 如下 將同步 放入settimeout中,變成非同步,則和ajax中的 同為非同步,則按照非同步的方式來排列執行順序。由此引入非同步之間的執行順序問題!首先常見的非同步一般有 ajax可以非...

setTimeout非同步執行函式this丟失

var prop 100 function parent parent.prototype.get function parent.prototype.show function var child new parent child.show 2.使用es6中的箭頭函式,因為在箭頭函式中this是固...

python 實現非同步執行

網上看到個例子怎樣利用 threading 模組實現非同步執行,自己動手試了試,寫了個裝飾器的例子,很實用。把 async 分離開,放到乙個單獨的模組中,就可以把它當成乙個模組實用 分析一下,下面的例子 定義了乙個裝飾器 async 和 a b 兩個function a 裡面sleep 20s 然後...