bluebird的promiseall浅析 发表于 2016-09-14 | 更新于 2019-05-09 | 评论数: | 阅读次数: Promise.allhexo中load方法使用了Promise.all,来看代码: 12345678910111213Hexo.prototype.load = function(callback){ var self = this; return loadDatabase(this).then(function(){ return Promise.all([ self.source.process(), self.theme.process() ]); }).then(function(){ return self._generate({cache: true}); //只有当上面两个方法都执行成功后才会调用_ }).nodeify(callback);}; 1234567891011121314151617181920212223242526272829303132333435363738var Promise = require('bluebird');var call = function(name, args, callback){ if (!callback && typeof args === 'function'){ callback = args; args = {}; } return Promise.all([ (function(){ console.log('1');//这里会打印 //var i = '5'; })(), (function(){ //console.log('2');//这里不会打印 throw '2'; })(), (function(){ console.log('6');//这里不会打印 })() ]).then(function(){//数组里的都通过才会打印3 console.log('3'); }).nodeify(callback);}; call('new', '2',function(e){ console.log('nodeify'); console.log(e); console.log('callback'); //进入reject会调用callback //throw ; }).then(function() { console.log('then'); }).catch(function(err) { console.log('end'); console.log(err);//进入reject会调用 }); 欢迎关注我的公众号:沉迷Spring 本文作者: John | 微信公众号【沉迷Spring】 本文链接: http://johnwonder.github.io/2016/09/14/bluebird-promiseall/ 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!