<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Q框架的Q.deferd使用方案 * 寫一個函數帶一個參數,返回函數結果為該參數累加1000,如果結果大于5000則返回錯誤,如果小于5000則返回累加結果。 ~~~ //引用q框架 var Q = require('q'); //全局數據 //函數首選promise化 function f1(args) { var defered = Q.defer(); setTimeout(function () { //計算 args += 1000; //如果結果大于5000那么給出錯誤的結果 if (args > 5000) { //錯誤的結果 defered.reject('錯誤'); } else { //正確的結果 defered.resolve(args); } }, 1000); return defered.promise; }; //執行f1,并且執行then方法,等待異步結果 f1(100).then(function (data) { console.log(data); },function (err) { console.log(err); }); ~~~ * 【使用q框架處理有一連串的異步方法,需要按順序執行】一個變量經歷4個工序,分別每個工序需要若干時間,假設第一個工序需要1秒,第二個工序需要2秒,第三個工序需要4秒,第四個工序需要1秒 ~~~ var Q = require('q'); //f1(data)的參數data為初始值 function f1(data) { var defered = Q.defer(); setTimeout(function () { data += 'f1'; console.log('f1結束'); defered.resolve(data); }, 1000); return defered.promise; }; //f2(data)的參數data會銜接上f1的data的結果 function f2(data) { var defered = Q.defer(); setTimeout(function () { data += 'f2'; console.log('f2結束'); defered.resolve(data); }, 2000); return defered.promise; }; function f3(data) { var defered = Q.defer(); setTimeout(function () { data += 'f3'; console.log('f3結束'); defered.resolve(data); }, 4000); return defered.promise; }; function f4(data) { var defered = Q.defer(); setTimeout(function () { data += 'f4'; console.log('f4結束'); defered.resolve(data); }, 1000); return defered.promise; }; f1('hzj').then(f2).then(f3).then(f4).done(function (data) { console.log(data); }); ~~~ * 動態多異步任務順序執行 ~~~ var Q = require('q'); function f2(temp) { var defered = Q.defer(); setTimeout(function () { temp.data += 'f2'; console.log(temp.js + ':f2結束'); temp.js += 1; defered.resolve(temp); }, 2000); return defered.promise; }; //動態自定義函數異步隊列 function task() { //需要執行的函數數組,需要注意的是這里是函數對象,并不是執行函數,且函數對象需要返回的是promise var funcs = [f2, f2, f2, f2]; //設置初始值 var temp = { //計數器 js: 0, //真正的數據 data: 'hzj' }; //實例化Q,并且給出初始值 var result = Q(temp); //開始異步順序執行函數數組里面的函數 //形成xx.then().then().then()形式 funcs.forEach(function (f) { result = result.then(f); }); //返回最后一個異步任務 return result; } //開始執行 //done方法為全部結束后,執行結果 task().done(function (data) { console.log(data.data); }); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看