nodejs里的promise

在使用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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容