美文网首页
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

    在使用nodejs时处理其他回调函数,在少的情况还是不错的感觉,但当回调函数一多时,整个感觉就很糟糕的,,如下图所...

  • 纯手写实现自己的nodejs promise 库

    纯手写实现自己的nodejs promise 库什么是Promise?promise 链Async/Await后续...

  • nodejs + cheerio + Promise(blueb

    文章概要 使用nodejs + cheerio + Promise(bluebird库实现)的nodejs课程数据...

  • 实现一个简单的Promise/Deferred框架

    利用nodejs的event模块,可以实现一个最简单的Promise/Deferred框架: Promise De...

  • Nodejs Promise 读书笔记

    Nodejs Promise 读书笔记 前言 Promise是抽象异步处理对象以及对其进行各种操作的组件。(Pro...

  • Nodejs http + promise

    0x0 前言 有了前面的《使用Promise解决多层异步调用的简单学习》和《如何使用Nodejs进行批量下载》两篇...

  • NodeJS的Promise的用法

    Javascript的特点是异步,Javascript不能等待,如果你实现某件需要等待的事情,你不能停在那里一直等...

  • nodejs异步控制

    bluebird与原生Promise对象及bluebird模块的中文API文档 nodejs异步控制「co、asy...

  • 2018 第一本书

    阿啦嘞:《深入浅出nodejs》《JS promise迷你书》 不折腾:[ √ ] 《王小波系列》 llp:《皮...

  • es6笔记之十-async await

    nodeJs,fs.readFile实例演示,用三种方法读取文件 promise genrator async (...

网友评论

      本文标题:nodejs里的promise

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