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

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

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

      碼農(nóng)干貨系列【18】--getting started with Promise.js(總)

      2013-05-03 15:30  【當(dāng)耐特】  閱讀(4347)  評(píng)論(3)    收藏  舉報(bào)

      引用Promise.js

         <script src="promise.js"></script>

      你可以點(diǎn)擊這里下載。

      ps:如果使用了SCJ Framework,請(qǐng)使用SCJ.createPromise代替下面的Promise 

      done/resolve

      promise.js提供了done和resolve方法,done負(fù)責(zé)注冊(cè)成功的回調(diào)函數(shù),resolve負(fù)責(zé)觸發(fā)。

              function cb() {
                  alert('success')
              }
              var prms = Promise()
              prms.done(cb)
              setTimeout(function() {
                  prms.resolve()
              }, 3000)

      在3秒之后,瀏覽器將alert  “success”。

       

      當(dāng)然你也可以通過prms.resolve(“xxx”)傳遞參數(shù)給cb函數(shù)使用,如:

              function cb(num) {
                  alert(num)
              }
              var prms = Promise()
              prms.done(cb)
              setTimeout(function() {
                  prms.resolve(1)
              }, 3000)

      在3秒之后,瀏覽器將alert  “1”。

      fail/reject

      fail函數(shù)負(fù)責(zé)注冊(cè)失敗的回調(diào)函數(shù),reject負(fù)責(zé)觸發(fā)。如:

              function cb() {
                  alert('fail')
              }
              var prms = Promise()
              prms.fail(cb)
              setTimeout(function () {
                  prms.reject()
              }, 3000)

      progress/notify

      progress函數(shù)負(fù)責(zé)注冊(cè)處理中進(jìn)度的回調(diào)函數(shù),notify負(fù)責(zé)觸法。如:

              function cb() {
                  alert('progress')
              }
              var prms = Promise()
              prms.progress(cb)
              setInterval(function() {
                  prms.notify()
              }, 2000)

      每隔兩秒瀏覽器會(huì)彈出一個(gè)progress。

      chain

              function cb1() {
                  alert('success')
              }
              function cb2() {
                  alert('fail')
              }
              function cb3() {
                  alert('progress')
              }
              var prms = Promise();
              prms.done(cb1).fail(cb2).progress(cb3)
              setTimeout(function () {
                  prms.resolve()
                  //prms.reject()
                  //prms.notify()
      
              }, 3000)

      then

              function fn1() {
                  alert('success')
              }
              function fn2() {
                  alert('fail')
              }
              function fn3() {
                  alert('progress')
              }
              var prms = Promise()
              prms.then(fn1, fn2, fn3)
              prms.resolve()
              prms.reject()
              prms.notify()

      當(dāng)然也支持prms.then().then().then()……….

      當(dāng)then的第一個(gè)參數(shù)為一個(gè)數(shù)組的時(shí)候,要等所有task都完成:

      f1().then([f2_1, f2_2]).then(f3)

      如上面的代碼:

      f1執(zhí)行完后,同時(shí)執(zhí)行f2_1和f2_2,當(dāng)f2_1和f2_2全部都執(zhí)行完成才會(huì)執(zhí)行f3。

      any

      f1().any([f2_1, f2_2]).then(f3)

      f1執(zhí)行完后,同時(shí)執(zhí)行f2_1和f2_2,當(dāng)f2_1和f2_2中的任意一個(gè)執(zhí)行完成才會(huì)執(zhí)行f3。

      always

              var prms = Promise()
              prms.always(function () {
                  alert(2)
              })
              setTimeout(function () {
                  // prms.resolve()
                  prms.reject()
              }, 3000)

      always(fn)等同于then(fn,fn),也等同于done(fn).fail(fn)

      wait

              function f10() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(10);
                      promise.resolve();
                  }, 4500)
      
                  return promise;
              }
      
              function f11() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(11);
                      promise.resolve();
                  }, 1500)
      
                  return promise;
              }
      
              f11().wait(5000).then(f10)  //execute f11 then wait 5000ms then execute f10

      ensure

      ensure方法類似try…catch..finally中的finally,不管task成功失敗都會(huì)執(zhí)行。

      Promise.when

              Promise.when(f1(), f2()).then(f3).then(f4)
            
              function f1() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(1);
                      promise.resolve("from f1");
                  }, 1500)
      
                  return promise;
              }
      
              function f2() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(2);
                      promise.resolve();
                  }, 5500)
      
                  return promise;
              }
      
              function f3() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(3);
                      promise.resolve();
                  }, 1500)
      
                  return promise;
      
              }
      
              function f4() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(4);
                      promise.resolve();
                  }, 1500)
      
                  return promise;
              }

      上面promise.when的等同簡(jiǎn)略寫法也可以是:Promise(f1(),f2()).then….

      Promise.any

      Promise.any的使用和when一樣,when的意義是等所有task都完成再執(zhí)行后面的task,而any的意義是任何一個(gè)task完成就開始執(zhí)行后面的task。

      Promise.timeout

              Promise.timeout(f1(), 2000).then(f2, function () {
                  alert("timeout");
              }).wait(5000).then(f3);
              function f1() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(1);
                      promise.resolve("from f1");
                  }, 1500)
      
                  return promise;
              }
      
              function f2() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(2);
                      promise.resolve();
                  }, 1500)
      
                  return promise;
              }
      
              function f3() {
                  var promise = Promise();
                  setTimeout(function () {
      
                      console.log(3);
                      promise.resolve();
                  }, 1500)
      
                  return promise;
      
              }

      with wind.js

          <script src="wind-all-0.7.3.js"></script>
          <script src="promise.js"></script>
          <script>
      
              Wind.Promise.create = function (fn) {
                  var prms = Promise();
                  fn(prms.resolve, prms.reject);
                  return prms;
              }
      
              var testAsync = eval(Wind.compile("promise", function () {
                  for (var i = 0; i < 3; i++) {   //loop 3 times
                      var aa = $await(f1());
                      alert(aa);                  //alert “from f1” 
                      $await(f2().wait(3000));    //execute f2 then wait 3000ms
                      $await(f3());
                  }
              }));
      
              testAsync();
      
              function f1() {
                  var promise = Promise();
                  setTimeout(function () {
                      console.log(1);
                      promise.resolve("from f1");
                  }, 2500)
      
                  return promise;
              }
      
              function f2() {
                  var promise = Promise();
                  setTimeout(function () {
                      console.log(2);
                      promise.resolve();
                  }, 1500)
      
                  return promise;
              }
      
              function f3() {
                  var promise = Promise();
                  setTimeout(function () {
                      console.log(3);
                      promise.resolve();
                  }, 1500)
      
                  return promise;
              }
          </script>

      That’s all.Have Fun!

      主站蜘蛛池模板: 亚洲综合精品第一页| 国产精品v片在线观看不卡| 性男女做视频观看网站| 亚洲日韩久热中文字幕| 国产成人午夜精品福利| 日韩精品人妻av一区二区三区| 久久一日本道色综合久久| 一区二区中文字幕视频| 三级国产在线观看| 无码人妻h动漫| 国产三级精品三级在线看| 亚洲欧美日本久久网站| 乱人伦中文字幕成人网站在线| 国产高清av首播原创麻豆| 午夜福利一区二区在线看| 亚洲 日本 欧洲 欧美 视频| 国产清纯在线一区二区| 噜妇插内射精品| 无码一区中文字幕| 丁香五月亚洲综合深深爱| 亚洲人成网站在线观看播放不卡| 国产成人免费ā片在线观看| 欧美v国产v亚洲v日韩九九| 色综合久久一区二区三区| 国产普通话对白刺激| 日韩区中文字幕在线观看| 锡林郭勒盟| 日本一区二区三区专线| 久久天天躁狠狠躁夜夜2020老熟妇| 特级欧美AAAAAAA免费观看| 亚洲国产av区一区二| 国产免费久久精品44| 男人扒开添女人下部免费视频| 越西县| 九九热免费在线观看视频| 加勒比无码人妻东京热| 在线精品国产成人综合| 奇米四色7777中文字幕| 成人性影院| 精品无码人妻| 皮山县|