亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于promise.js實現nodejs的promises庫

2019-11-20 14:22:23
字體:
來源:轉載
供稿:網友

今天從GIT源碼庫中下載了promise.js,發現該源碼是基于Web前端JavaScript寫的,并不能直接用于nodejs。還好代碼不是很多,也不是很復雜。經過分析整合,將其實現為nodejs的一個框架,代碼如下:

(function(){/*** Copyright 2012-2013 (c) Pierre Duquesne <stackp@online.fr>* script: promise.js* description: promises的nodejs模塊* modified: https://github.com/stackp/promisejs* authors: alwu007@sina.cn* */var Promise = exports.Promise = function(){  this._callbacks = [];};Promise.prototype.then = function(func, context){  //處理回調結果的方法  function doCallbackResults(r) {    if (r instanceof Promise) {      r.then(function(err, values){        p.done(err, values);      });    } else {      p.done(null, r);    }  }  var p = new Promise();  if (this._isdone) {    var results = func.apply(context, this.results);    doCallbackResults(results);  } else {    this._callbacks.push(function(){      var results = func.apply(context, arguments);      doCallbackResults(results);    });  }  return p;};Promise.prototype.done = function(){  this.results = arguments;  this._isdone = true;  for (var i=0; i<this._callbacks.length; i++) {    this._callbacks[i].apply(null, arguments);  }  this._callbacks = [];};Promise.join = function(promises){  var p = new Promise();  var results = [];  if (!promises || !promises.length) {    p.done(results);    return p;  }  var numdone = 0;  var total = promises.length;  function notifier(i) {    return function() {      numdone += 1;      results[i] = Array.prototype.slice.call(arguments);      if (numdone === total) {        p.done(results);      }    };  }  for (var i = 0; i < total; i++) {    promises[i].then(notifier(i));  }  return p;};Promise.chain = function(funcs, args) {  var p = new Promise();  if (!funcs || !funcs.length) {    p.done.apply(p, args);  } else {    funcs[0].apply(null, args).then(function(){      funcs.splice(0, 1);      Promise.chain(funcs, arguments).then(function(){        p.done.apply(p, arguments);      });    });  }  return p;};})();

另附測試代碼如下:

/*** script: test.js* description: promise.js測試代碼* */var promise = require('./mypromise');function asyncfoo() {  var p = new promise.Promise();  setTimeout(function(){    p.done();  }, 1000);  return p;}function syncfoo() {  var p = new promise.Promise();  p.done();  return p;}var o = {};/*asyncfoo().then(function(){  return 'Raymond';}, o).then(function(err, name){  o.name = name;  return asyncfoo().then(asyncfoo).then(function(){    return asyncfoo().then(asyncfoo).then(function(){      return 18;    });  });}, o).then(function(err, age){  o.age = age;  return asyncfoo().then(asyncfoo).then(function(){    return asyncfoo().then(asyncfoo).then(function(){      return 'boy';    });  }).then(function(err, sex){    return sex;  });}).then(function(err, sex){  o.sex = sex;  return 'Hello, world!';}).then(function(err, say){  o.say = say;  console.dir(o);});syncfoo().then(function(){  return 'Raymond';}, o).then(function(err, name){  o.name = name;  return syncfoo().then(syncfoo).then(function(){    return syncfoo().then(syncfoo).then(function(){      return 18;    });  });}, o).then(function(err, age){  o.age = age;  return asyncfoo().then(asyncfoo).then(function(){    return asyncfoo().then(asyncfoo).then(function(){      return 'boy';    });  }).then(function(err, sex){    return sex;  });}).then(function(err, sex){  o.sex = sex;  return 'Hello, world!';}).then(function(err, say){  o.say = say;  console.dir(o);});*/function asyncfoo1(){  var p = new promise.Promise();  setTimeout(function(){    p.done(null, 'Raymond');  }, 1000);  return p;}function asyncfoo2(err, name){  o.name = name;  var p = new promise.Promise();  setTimeout(function(){    p.done(null, 18);  }, 1000);  return p;}function asyncfoo3(err, age){  o.age = age;  var p = new promise.Promise();  setTimeout(function(){    p.done(null, 'boy');  }, 1000);  return p;}function asyncfoo4(){  var p = new promise.Promise();  setTimeout(function(){    p.done(null, 'Hello, world!');  }, 1000);  return p;}promise.Promise.chain([asyncfoo1, asyncfoo2, asyncfoo3]).then(function(err, sex){  o.sex = sex;  return asyncfoo4();}).then(function(err, say){  o.say = say;}).then(function(){  console.dir(o);});

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久噜噜噜精品国产亚洲综合| 日韩电影中文字幕一区| 国产精品日日摸夜夜添夜夜av| 久久久噜噜噜久久| 欧美午夜电影在线| 久久久久久97| 性色av一区二区三区红粉影视| 一本一本久久a久久精品牛牛影视| 国产美女91呻吟求| 精品国产欧美一区二区三区成人| 日韩av不卡电影| 成人午夜高潮视频| 98视频在线噜噜噜国产| 亚洲第一黄色网| 日韩电影大全免费观看2023年上| 亚洲深夜福利视频| 色噜噜狠狠色综合网图区| 成人在线小视频| 黑丝美女久久久| 亚洲国产一区二区三区在线观看| 欧美色道久久88综合亚洲精品| 国产精品久久久久久久久久久久久久| 国产欧美日韩高清| 国产成人亚洲综合91| 久久精品91久久久久久再现| 国产97人人超碰caoprom| 亚洲男人天堂久| 亚洲跨种族黑人xxx| 欧美激情xxxxx| 2019国产精品自在线拍国产不卡| 一本大道香蕉久在线播放29| 欧美午夜女人视频在线| 91tv亚洲精品香蕉国产一区7ujn| 亚洲国产日韩精品在线| 国产主播在线一区| 亚洲视频一区二区三区| 欧美野外猛男的大粗鳮| 亚洲偷熟乱区亚洲香蕉av| 久久高清视频免费| 久久网福利资源网站| 亚洲国产精品久久精品怡红院| 日韩中文字幕国产| 日韩三级影视基地| 国产91久久婷婷一区二区| 色婷婷av一区二区三区久久| 国产精品久久久久久五月尺| 久久亚洲精品小早川怜子66| 国产综合久久久久| 欧美专区福利在线| 欧美激情喷水视频| 国产一区二区三区在线看| 欧美激情欧美狂野欧美精品| 欧美精品video| 欧美电影免费观看电视剧大全| 国产91在线视频| 久久综合免费视频| 亚洲欧美激情在线视频| 日韩中文字幕亚洲| 色噜噜久久综合伊人一本| 欧美福利视频在线| 国产精品福利网| 97国产一区二区精品久久呦| 欧美日韩性视频在线| 国产亚洲一级高清| 亚洲国产免费av| 日本久久久久久久| 国产做受69高潮| 7777kkkk成人观看| 久色乳综合思思在线视频| 91免费版网站入口| 亚洲精品理论电影| 久久久久久com| 欧美高跟鞋交xxxxhd| 午夜美女久久久久爽久久| 久久中文精品视频| 高清一区二区三区四区五区| 欧美视频不卡中文| 91丨九色丨国产在线| 91国产精品91| 大伊人狠狠躁夜夜躁av一区| 国产成人在线一区| 欧美精品精品精品精品免费| 亚洲成人在线网| 国产成人精品av在线| 亚洲精品资源在线| 欧美一级免费视频| 久久免费高清视频| 欧美猛交免费看| 欧美日韩福利在线观看| 国产精品网红直播| 亚洲美女又黄又爽在线观看| 国产91在线播放九色快色| 日韩中文字幕欧美| 97精品免费视频| 97视频国产在线| 91色视频在线观看| 亚洲综合日韩中文字幕v在线| 色小说视频一区| 午夜免费在线观看精品视频| 久久精品国产亚洲一区二区| 日韩视频―中文字幕| 午夜精品一区二区三区视频免费看| 高清日韩电视剧大全免费播放在线观看| 日韩高清人体午夜| 国产成人精品久久| 中文字幕日韩av电影| 高清欧美一区二区三区| 欧美成年人视频网站欧美| 欧美日韩精品在线播放| 亚洲午夜精品久久久久久性色| 日韩性xxxx爱| 欧美一级大片在线观看| 日韩精品一区二区视频| 中文字幕日韩有码| 亚洲日本中文字幕| 精品免费在线视频| 久久人人爽人人爽人人片av高清| 国产精品福利久久久| 尤物九九久久国产精品的特点| 欧美韩日一区二区| 久久久久久免费精品| 日韩在线欧美在线| 久久国产精品视频| 成人伊人精品色xxxx视频| 91夜夜未满十八勿入爽爽影院| 国语自产精品视频在线看| 日韩av中文字幕在线免费观看| 中文国产亚洲喷潮| 伊人伊人伊人久久| 日韩精品视频在线| 国产亚洲一区二区精品| 久久久久久com| 亚洲a在线观看| 欧美壮男野外gaytube| 国产精品久久久久久久午夜| 美女国内精品自产拍在线播放| 欧美精品免费在线观看| 国产欧美在线视频| 中文字幕在线日韩| 色偷偷噜噜噜亚洲男人的天堂| 亚洲性猛交xxxxwww| 午夜精品www| www国产精品视频| 琪琪亚洲精品午夜在线| 成人性生交大片免费观看嘿嘿视频| 亚洲一区二区在线播放| 成人网在线免费看| 精品调教chinesegay| 国产丝袜精品第一页| 91在线观看免费观看| 欧美激情一区二区久久久| 亚洲成成品网站| 欧美性猛交xxxx黑人猛交| 久久久久中文字幕| 热久久这里只有精品| 国产日韩欧美在线视频观看| 一区二区欧美在线| 亚洲国产精品成人一区二区| 粉嫩av一区二区三区免费野| 蜜臀久久99精品久久久无需会员| 国产精品成人免费视频| 久久久久久伊人| 国产91久久婷婷一区二区| 久久天天躁狠狠躁夜夜爽蜜月|