代码描述:promise.js实现nodejs promises库。promise.js实现nodejs promises库简单介绍
本章节分享一段代码,是由promise.js实现的nodejs的promises库,希望能够给需要的朋友带来帮助。 promise是由javascript实现的轻量级的框架,此框架可以让编程人员从纷乱复杂的异步回调中抽出精力来,集中于业务逻辑方面的工作。但是在默认状态下,promise.js并不能够直接用于node.js,下面就是将其进行封装整合一下,将其实现为node.js下的一个框架。 代码如下:
<script> (function(){ 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>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能