美文网首页
nodejs里的promise

nodejs里的promise

作者: 深思海数_willschang | 来源:发表于2016-08-30 14:57 被阅读109次

    在使用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

    相关文章

      网友评论

          本文标题:nodejs里的promise

          本文链接:https://www.haomeiwen.com/subject/rqnfettx.html