嵌套回調非同步與$.Deferred非同步

来源:http://www.cnblogs.com/jone-chen/archive/2016/03/01/5229671.html
-Advertisement-
Play Games

HTML: <input type="button" id="btn1" value="嵌套回調非同步"> <input type="button" id="btn2" value="$.Deferred非同步"> <p>顯示結果:<span id="result"></span></p> JS: va


HTML:

<input type="button" id="btn1" value="嵌套回調非同步">
<input type="button" id="btn2" value="$.Deferred非同步">
<p>顯示結果:<span id="result"></span></p>

JS:

var btn_1 = document.querySelector('#btn1');
var btn_2 = document.querySelector('#btn2');

btn_1.onclick = function() {
    //模擬非同步A
    function A(callback) {
        setTimeout(function() {
            callback(1)
        },
        500)
    };
    //模擬非同步B
    function B(callback, value) {
        setTimeout(function() {
            callback(value + 2)
        },
        500)
    }
    //A執行完畢後,在執行B
    A(function(data1) {
        B(function(data2) {
            document.querySelector('#result').innerHTML = "嵌套非同步:" + data2;
        },
        data1)
    })
}

btn_2.onclick = function() {
    //模擬非同步C
    function C() {
        var dtd = $.Deferred(); //創建
        setTimeout(function() {
            dtd.resolve(3) //成功
        },
        500) return dtd
    };
    //模擬非同步D
    function D(value) {
        var dtd = $.Deferred();
        setTimeout(function() {
            dtd.resolve(value + 4)
        },
        500) return dtd
    }
    //模擬非同步E
    function E(value) {
        var dtd = $.Deferred();
        setTimeout(function() {
            dtd.resolve(value + 5)
        },
        500) return dtd
    }
    C().then(function(data) { //執行回調
        return D(data)
    }).then(function(data) {
        return E(data)
    }).then(function(data) {
        document.querySelector('#result').innerHTML = "Deferred非同步處理:" + data;
    })
}

DEMO地址:http://codepen.io/jonechen/pen/EKaXxb


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在編寫CSS時也存在一些編碼規範,平時註意這些基本的規範,可使代碼更易閱讀和維護。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> /* 語法 用兩個空格來代替製表符(tab
  • 在編寫HTML時,可能有一些方面不夠規範,在通過對《HTML5編碼規範》的學習後,採用代碼註解的方式,做相關的整理,方便今後回顧。 1 <!DOCTYPE html> <!-- HTML5 doctype 標準模式(standard mode)的聲明,這樣能夠確保在每個瀏覽器中擁有一致的展現-->
  • 1 H5 緩存機制介紹 H5,即 HTML5,是新一代的 HTML 標準,加入很多新的特性。離線存儲(也可稱為緩存機制)是其中一個非常重要的特性。H5 引入的離線存儲,這意味著 web 應用可進行緩存,並可在沒有網際網路連接時進行訪問。 H5 應用程式緩存為應用帶來三個優勢: 離線瀏覽 用戶可在應用離
  • 一、標題 標題的h1到h6標簽,這裡不再贅述。值得一提的是,H5中新定義了一個元素<hgroup>,用來將標題和副標題群組。一般在header里將一組標題組合在一起,變成一個區塊: 1 <body> 2 <header> 3 <hgroup> 4 <h1> 阿裡旅行·去啊 </h1> 5 <h2>
  • 目錄 瞭解什麼是Web 瞭解什麼是HTML 瞭解什麼是CSS 瞭解什麼是JavaScript 瞭解HTML與CSS是如何一起工作的 為何要使用CSS 擴展閱讀 一、瞭解什麼是Web? 通俗來講,可以使用戶通過瀏覽器來訪問某個電腦上的文件。 二、瞭解什麼是HTML? HTML(超文本標記語言--Hyp
  • 前端自動化流程工具,用來合併文件,壓縮等。 Gulp官網 http://gulpjs.com/ Gulp中文網 http://www.gulpjs.com.cn/ Gulp中文文檔 https://github.com/lisposter/gulp-docs-zh-cn Gulp插件網 http:/
  • 由於瀏覽器提供的alert和confirm框體驗不好,而且瀏覽器沒有提供一個標準的以對話框的形式顯示自定義HTML的彈框函數,所以很多項目都會自定義對話框組件。本篇文章介紹自己在項目中基於bootstrap的modal組件,自定義alert,confirm和modal對話框的經驗,相對比較簡單實用,...
  • 一、bug描述 下圖為正常情況,一個網頁主體寬度為1280px。 當縮小瀏覽器寬度,出現滾動條時,效果如下,右側出現空白,導致內容顯示不全。 二、bug重現和解決 1、代碼如下 body中有一個灰色背景的div,div中嵌套一個有固定寬度1280px的p標簽。 <!DOCTYPE html> <ht
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...