<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          queue-fun基于Promise的nodejs隊列控制模塊

          聯(lián)合創(chuàng)作 · 2023-09-23 16:29

          queue-fun 是基于Promise的 運行隊列控制類。

          使用場景

          • 巨量同邏輯業(yè)務平穩(wěn)處理

          • 間歇性高并發(fā)系統(tǒng)

          • 控制單用戶占用資源過高

          隊列

          queue-fun.Queue(q)

          初始化隊類 參數(shù)q可傳

          • 無參數(shù) 隊列使用內(nèi)置的實現(xiàn)的Promise;

          • q/ES6原生Promise 插入隊列方法: push unshift go jump返回對應的promise

          實例化隊列 new queue-fun.Queue()(runMax, con)

          • runMax 并行運行隊列方法的最大個數(shù)

          • con 配置隊列 開始 結(jié)束 事件,運行單元的 成功,失敗 事件及配置執(zhí)行單元出錯的 重試 機制。

          示例代碼:

          var queuefun = require('queue-fun');  //引入
          //初始化Promise異步隊列類
          var Queue = queuefun.Queue(); 
          //實列化最大并發(fā)為2的運行隊列
          var queue1 = new Queue(2,{
              "event_succ":function(data){console.log('queue-succ:',data)}  //成功
              ,"event_err":function(err){console.log('queue-succ:',data)}  //失敗
          }); 
          var q = queuefun.Q;  //模塊中簡單實現(xiàn)了Q的基本功能,可以一試,
          //定義一個Promise風格的異步方法
          function testfun(i){
              var deferred = q.defer();
              setTimeout(function(){
                  if(i\ && i % 3 == 0){
                      deferred.reject(new Error("err " + i))
                  }else{
                      deferred.resolve(i)
                  }
              },(Math.random() * 2000)>>0)
              return deferred.promise;
          }
          //向隊列添加運行單元
          queue1.push(testfun,[1]) //添加運行項
          queue1.go(testfun,[2]) //添加并自動啟動隊列
          queue1.go(testfun,[3],{Queue_event:0}) //添加不會觸發(fā)隊列 回調(diào)的運行項.
          queue1.go(testfun,[4]).then(
              function(data){console.log('done-succ:',data)},
              function(err){console.log('done-err:',err)}
          )
          queue1.go(testfun,[5],{
              event_succ:function(data){console.log('conf-succ:',data)},
              event_err:function(err){console.log('conf-err:',err)}
          })
          瀏覽 15
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲欧洲高清视频免费 | 大香蕉视频伊人在线 | 看日韩毛片 | 日本爱爱高清视频 | 一本道无码在线播放 |