成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

淺談異步編程

laoLiueizo / 2143人閱讀

摘要:等到一段時間后,車到了,小紅打電話給小明車到了發(fā)布,小明在接到電話之后,要做一些準備訂閱時定義的回調(diào)函數(shù)。工作中的異步通過事件實例去做調(diào)控,簡單的代碼示例是一個事件實例,負責發(fā)布訂閱者的內(nèi)部實現(xiàn)訂閱發(fā)布另一端程序干一些事情。

淺談異步編程 引子
頁面渲染與setTimeout();
同步與異步------我的理解
任務在當次事件循環(huán)中阻塞后續(xù)任務進行的(指的是耗時較多,這個多少,暫時還沒有個概念,反正就是在獲取的cpu時間片中不做實際事情的就是阻塞吧),就是同步;任務在當次事件循環(huán)中不阻塞后續(xù)任務進行的(簡單的可以理解為,一條流水線上,某個步驟要檢測是否合格,不影響流水線的情況下,由流水線之外的工作人員,相當于worker,去做這件事情),就是異步;
異步編程重要js設計模式-------發(fā)布訂閱者模式

現(xiàn)實中的異步----------買車

小明要買車,小紅告訴他現(xiàn)在車還沒到,到的時候再打電話給他,于是小明留下了聯(lián)系方式(訂閱)。等到一段時間后,車到了,小紅打電話給小明車到了(發(fā)布),小明在接到電話之后,要做一些準備(訂閱時定義的回調(diào)函數(shù))。

工作中的異步

通過事件實例去做調(diào)控,簡單的代碼示例:
// emitter是一個事件實例,負責發(fā)布訂閱者的內(nèi)部實現(xiàn)

// 訂閱
emitter.on("eventName", function () {
    dosomeThing();
});

// 發(fā)布
// 另一端程序干一些事情。好了~時機到了,就:
emitter.emit("eventName");
發(fā)布訂閱者模式其實在代碼執(zhí)行順序上就是:訂閱(監(jiān)聽)------> 發(fā)布(觸發(fā))

傳統(tǒng)異步編程

通過高階函數(shù)實現(xiàn)
// 定義高階函數(shù)
var asyncFn = function (cb) {
    // dosomeThing async...
    typeof === "function" && cb();
};
// 使用
asyncFn(function (res) {
    // dosomeThing callback...
});

現(xiàn)在比較常用的Promise

var asyncFn = function () {
    // dosomeThing sync...
    Promise.resolve(); // 通常用于當次事件循環(huán)(或者當前線程執(zhí)行)結(jié)束之后才需要干的事情
}
// 碼段1
let asyncFn = new Promise((resolve, reject) => {
    resolve("完成");
});

asyncFn.then((res) => {
    console.log(res);
});
console.log("同步");
碼段1 執(zhí)行結(jié)果:
VM51728:1 同步執(zhí)行
22:26:27.891 VM51728:1 完成
22:26:27.891 undefined
產(chǎn)生異步的情況

setTimout()

setInterval()

requestAnimationFrame()

Promise.resolve()方法

各種ajax異步請求

Vue的nextTick()方法,由三種方式實現(xiàn)

jsonp加載方式

...

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/90113.html

相關文章

  • 淺談JavaScript中的事件循環(huán)機制

    摘要:事件循環(huán)背景是一門單線程非阻塞的腳本語言,單線程意味著,代碼在執(zhí)行的任何時候,都只有一個主線程來處理所有的任務。在意識到該問題之際,新特性中的可以讓成為一門多線程語言,但實際開發(fā)中使用存在著諸多限制。這個地方被稱為執(zhí)行棧。 事件循環(huán)(Event Loop) 背景 JavaScript是一門單線程非阻塞的腳本語言,單線程意味著,JavaScript代碼在執(zhí)行的任何時候,都只有一個主線程來...

    Pluser 評論0 收藏0
  • [前端工坊]淺談Web編程中的異步調(diào)用的發(fā)展演變

    摘要:三即生成器,它是生成器函數(shù)返回的一個對象,是中提供的一種異步編程解決方案而生成器函數(shù)有兩個特征,一是函數(shù)名前帶星號,二是內(nèi)部執(zhí)行語句前有關鍵字調(diào)用一個生成器函數(shù)并不會馬上執(zhí)行它里面的語句,而是返回一個這個生成器的迭代器對象。 文章來自微信公眾號:前端工坊(fe_workshop),不定期更新有趣、好玩的前端相關原創(chuàng)技術文章。 如果喜歡,請關注公眾號:前端工坊版權歸微信公眾號所有,轉(zhuǎn)載請...

    qpwoeiru96 評論0 收藏0
  • 淺談 JavaScript 模塊化編程

    摘要:與在模塊化編程的世界中,有兩個規(guī)范不得不提,它們分別是和。所有依賴于某個模塊的代碼全部移到模塊加載語句的回調(diào)函數(shù)中去。的語句接受兩個參數(shù)在回調(diào)函數(shù)中,可以通過變量引用模塊。回調(diào)函數(shù)的返回值就是當前對象的導出值。 JavaScript本身不是一種模塊化語言,設計者在創(chuàng)造JavaScript之初應該也沒有想到這么一個腳本語言的作用領域會越來越大。以前一個頁面的JS代碼再多也不會多到哪兒去,...

    wdzgege 評論0 收藏0
  • jdk7:淺談 AIO NIO2.0

    摘要:一概述在引入同步非阻塞包之后,終于在版本加入了異步的。注意,無論用還是,這里的調(diào)用都是非阻塞的立即返回。不過,由于朝鮮還沒有研發(fā)出能夠重返大氣層的運載火箭,所以大浦洞號尚不具備搭載彈頭的攻擊能力。 一、概述 JDK在1.4引入NIO(同步非阻塞)包之后,終于在1.7版本加入了異步IO的AIO。同步異步阻塞和非阻塞等概念,建議參考 《Unix網(wǎng)絡編程》 卷1. ,這里只談AIO的api。...

    wanghui 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<