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
上一篇下一篇

猜你喜欢

热点阅读