<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JavaScript中的回調地獄及解決方法

      1、回調地獄

      在使用JavaScript時,為了實現某些邏輯經常會寫出層層嵌套的回調函數,如果嵌套過多,會極大影響代碼可讀性和邏輯,這種情況也被成為回調地獄。比如說你要把一個函數 A 作為回調函數,但是該函數又接受一個函數 B 作為參數,甚至 B 還接受 C 作為參數使用,就這樣層層嵌套,人稱之為回調地獄,代碼閱讀性非常差。比如:

      var sayhello = function (name, callback) {
        setTimeout(function () {
          console.log(name);
          callback();
        }, 1000);
      }
      sayhello("first", function () {
        sayhello("second", function () {
          sayhello("third", function () {
            console.log("end");
          });
        });
      });
      //輸出: first second third  end

      2、解決回調地獄

      解決回調地獄有很多方法,比如:Promise 對象、Generator 函數、async 函數

      3、Promise 對象解決回調地獄

      采用鏈式的 then,可以指定一組按照次序調用的回調函數。這時,前一個 then 里的一個回調函數,返回的可能還是一個 Promise對象(即有異步操作),這時后一個回調函數,就會等待該 Promise對象的狀態發生變化,才會被調用。由此實現異步操作按照次序執行。

      var sayhello = function (name) {
        return new Promise(function (resolve, reject) {
          setTimeout(function () {
            console.log(name);
            resolve();  //在異步操作執行完后執行 resolve() 函數
          }, 1000);
        });
      }
      sayhello("first").then(function () {
        return sayhello("second");  //仍然返回一個 Promise 對象
      }).then(function () {
        return sayhello("third");
      }).then(function () {
        console.log('end');
      }).catch(function (err) {
        console.log(err);
      })
      //輸出:first  second  third end

      上面代碼中,第一個 then 方法指定的回調函數,返回的是另一個Promise對象。這時,第二個then方法指定的回調函數,就會等待這個新的Promise對象狀態發生變化。如果變為resolved,就繼續執行第二個 then 里的回調函數

      4、Generator 函數

      // 用 co 模塊自動執行
      var co = require('co');
      var sayhello = function (name, ms) {
        setTimeout(function (name,ms) {
          console.log(name);
        }, ms);
      }
      
      var gen = function* () {
        yield sayhello("xiaomi", 2000);
        console.log('frist');
        yield sayhello("huawei", 1000);
        console.log('second');
        yield sayhello("apple", 500);
        console.log('end');
      }
      co(gen());

       

      posted @ 2019-03-01 12:19  wenxuehai  閱讀(13674)  評論(1)    收藏  舉報
      //右下角添加目錄
      主站蜘蛛池模板: 宁都县| 中文字幕无码av不卡一区| 少妇内射高潮福利炮| 亚洲国产成人AⅤ片在线观看| 国产精品中文一区二区| 亚洲一区二区三区在线观看精品中文| 啦啦啦中文在线观看日本| 久久精品国产91精品亚洲| 精品视频在线观看免费观看| 人人妻人人狠人人爽天天综合网 | 40岁大乳的熟妇在线观看| 亚洲精品国产自在现线最新| 亚洲三级香港三级久久| 人妻教师痴汉电车波多野结衣| 精品国产av一区二区三区| 国产高跟黑色丝袜在线| 两性午夜刺激性视频| 欧美日韩一线| 国产亚洲国产亚洲国产亚洲| 国产品精品久久久久中文| 亚洲精品一区二区制服| 四虎网址| 少妇太爽了在线观看免费视频| 洪雅县| 亚洲v欧美v日韩v国产v| 国产高清精品在线一区二区| 亚洲成av一区二区三区| 男女爽爽无遮挡午夜视频| 一出一进一爽一粗一大视频| 久久精品国产亚洲av麻豆软件| 少妇被粗大的猛进69视频| 日韩一区二区三区av在线| 日本道高清一区二区三区| 91青青草视频在线观看| 欧美大bbbb流白水| 国产精品最新免费视频| 国产精品99一区二区三区| 婷婷久久香蕉五月综合加勒比| 无码人妻一区二区三区线| 日本熟妇hdsex视频| 日韩有码中文字幕国产|