欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

javascript異步編程方法是什么

這篇文章將為大家詳細講解有關javascript異步編程方法是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供旺蒼企業(yè)網站建設,專注與成都網站建設、網站制作、html5、小程序制作等業(yè)務。10年已為旺蒼眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網站設計公司優(yōu)惠進行中。

JavaScript實現異步編程的方法有:易于理解和實現但是代碼不好維護的回調方法,發(fā)布/訂閱方法,易于理解并且可綁定多個事件但是工作流程混亂的事件監(jiān)聽方法,Promises方法

異步模式是非常重要,在瀏覽器端長時間運行的操作應該異步執(zhí)行,以避免不響應。

大家都知道JavaScript的執(zhí)行環(huán)境是單線程的,單線程就意味著在任何時候都只能運行一個任務。如果遇到多任務的時候就需要在隊列中等待上一任務的完成。因此耗費時間比較多,同步模式就類似于這種單線程模式,異步模式是完全不同的,每一個任務都有一個回調函數,當一個任務完成后,它將執(zhí)行回調函數,后面的任務可以與前一個任務同時運行。任務的執(zhí)行順序與隊列中的任務序列不同。

方法一:回調方法

這個方法是異步編程的基本方法,假設有兩個函數f1和f2,后者將等待第一個函數的結果。

F1(); 
F2();

如果f1是長時間運行的操作,則可以重寫f1并將f2作為f1的回調函數。

function f1(callback){
setTimeout(function () {
 callback();
    }, 1000);
}

使用此模式,同步操作就可以轉換為異步操作,f1不會阻止程序執(zhí)行,它會將先執(zhí)行主邏輯然后再執(zhí)行耗時的操作

回調函數的優(yōu)點是易于理解和實現,缺點是代碼不可讀和可維護,不同的組件高度耦合,工作流非?;靵y,每個任務只能有一個回調函數。

方法二:發(fā)布/訂閱

此事件可以理解為信號,假設存在信號中心,如果一個任務完成,它將向信號中心發(fā)布信號,其他任務可以從訂閱信號中心接收指定信號。這種方法就稱為發(fā)布/訂閱模式或者是觀察者模式。

例:f2向信號中心訂閱完成信號

jQuery.subscribe(“done”,f2);

然后寫f1為

function f1(){
    setTimeout(function () {
     jQuery.publish("done");
    }, 1000);
}

jQuery.publish(“done”)表示當f1完成執(zhí)行時它將向信號中心發(fā)送一個完成信號,然后f2將開始執(zhí)行。

當f2完成執(zhí)行時,它可以取消訂閱。

jQuery.unsubscribe(“done”,f2);

方法三:事件監(jiān)聽

另一種方法是事件驅動模式,一個任務的執(zhí)行不依賴于代碼順序,它們等待一個事件發(fā)生。在本例中仍然使用f1和f2,首先將一個事件綁定到f1。

f1.on('done',f2);

上述代碼的含義是如果f1完成事件發(fā)生,則執(zhí)行f2。

function f1(){
    setTimeout(function () {
      f1.trigger('done');
    }, 1000);
}

f1.trigger('done')表示它將觸發(fā)done事件,然后在執(zhí)行完成時執(zhí)行f2。

優(yōu)點是它易于理解并且可以綁定多個事件,每個事件都可以具有許多回調函數,并且它可以解耦哪個有利于模塊化。缺點是整個程序將被事件驅動,工作流程不是很清楚。

方法四:Promises方法

Promises對象是CommonJS提出的標準,目的是為異步編程提供通用接口。每個異步任務都會返回一個Promises對象,這個對象有一個允許設置回調函數的then方法。例如,f1的回調函數f2:

F1().then(F2)

f1應寫成:

function f1(){
    var dfd = $.Deferred();
    setTimeout(function () {
        dfd.resolve();
    }, 500);
    return dfd.promise;
}

優(yōu)點是回調函數是鏈接的,程序的工作流程非常清晰,它有一套完整的鏈接方法,可用于實現強大的功能。

例如,設置多個回調函數:

f1().then(f2).then(f3);

還有一個例子,如果有錯誤:

f1().then(f2).fail(f3);

其他三種方法不具備的一個優(yōu)點是一旦完成一個任務,如果添加更多的回調函數,它們將立即執(zhí)行。缺點是它不容易理解。

關于javascript異步編程方法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享標題:javascript異步編程方法是什么
標題來源:http://aaarwkj.com/article12/jegjdc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、網站內鏈、電子商務外貿網站建設、定制網站自適應網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網站建設
国产爆操美女在线观看| 中文乱码字幕亚洲精品| 亚洲成人爱情动作片在线观看| 黄片欧美精品在线观看| 18末年禁止观看免费软件| 丰满人妻被猛烈进入中| 色在色在线播放亚洲中文| 91伊人日本在线视频| 日韩欧美国产精品加勒比| 欧美一级特黄免费大片| 日韩新片一区二区三区| 尤物视频网站在线观看| 亚洲一区二区三区女同| 五月婷婷少妇中文字幕| 国产精品神马午夜福利| 亚洲欧美国产成人在线| 蜜臀av在线精品国自产拍| 亚洲天堂网免费在线看| 热99精品视频在线观看| 丰满人妻被猛烈进入中| 97色伦综合在线欧美视频| 日韩一区二区精品网站| 五月婷婷丁香在线观看| 日韩高清不卡在线视频| 日韩在线中文字幕精品| 亚洲午夜福利啪啪啪| 麻豆资源视频在线观看| 欧美激情片免费在线观看| 黄色日韩欧美在线观看| 视频一区二区三区不卡| 国产精品成人av在线| 中文字幕亚洲入口久久| 国产成人色污在线观看| 日韩欧美国产精品专区 | 日韩精品欧美精品视频一区| 丝袜亚洲激情欧美日韩偷拍| 中国成熟女人毛茸茸视频| 一区二区三区亚洲精品在线| 欧美伊人久久大综合精品| 中文字幕亚洲欧美日韩高清| 婷婷色精品一区二区激情|