nodejs里的promise
2016-08-30 本文已影响109人
深思海数_willschang
在使用nodejs时处理其他回调函数,在少的情况还是不错的感觉,但当回调函数一多时,整个感觉就很糟糕的,,如下图所示,有时都不知道哪跟哪了,即陷入了“回调黑洞”里去了。
cb2.jpg幸好在nodejs里有promise,可以将回调函数处理成像“同步”处理的形式。关于promise的资料请自己查询,本文在这只是使用Q(q.js)进行测试,先记录下来,待以后可能用得上。
npm install q
var Q = require('q');
var getBase64 = function() {
var b = new Buffer('willschang');
var s = b.toString('base64');
console.log('====',s);
var deferred = Q.defer();
deferred.resolve(s);
return deferred.promise;
};
var base64String = function(d) {
var b = new Buffer(d, 'base64')
var s = b.toString();
console.log('---------',s);
var deferred = Q.defer();
deferred.resolve(s);
return deferred.promise;
};
function printLog(data) {
console.log('打印函数请求回调!!');
console.log(data);
}
getBase64(printLog)
.then(base64String)
.done(function(data){
printLog(data);//得到base64String的返回值
},function(err){
printLog(err);//failed
});
结果如图所示:
cb3.jpg