Promise实现之bluebird 5分钟入门教程

常用资料(记得收藏)

nodejs的所有调用几乎是全异步的,而所有的IO操作也都是通过回调函数才能知道结果。 如果一个异步调用依赖另一个异步调用,如果没有Promise的话,代码会写的很诡异,看起来就像金字塔一样。

fs.readFile('1.txt', function(err, data){
    if(err){
        console.log(err);
        return;
    }
    fs.readFile('2.txt', function(err, data){
        if (err){
            console.log(err);
            return;
        }
        console.log(data);
        fs.readFile('3.txt', .....
        .....
    })
})

还好bluebird的出现,缓解了这种情况

安装

npm install --save bluebird

使用

var fs = require('fs');
var Promise = require('bluebird');

var readFileAsync = function(name){
    return new Promise(function(resolve, reject){
        fs.readFile(name, function(err, data){
            if(err) {
                reject(err);
            } else {
                resolve(data);
            }
        });
    })
})

readFileAsync('1.txt')
.then(function(data1){
    console.log(data1);
    return readFileAsync('2.txt');
})
.then(function(data2){
    console.log(data2);
})
.catch(function(err){
    console.error(err)
})

你可能觉的那个readFileAsync那个函数怎么这么长。(我写成那样,其实是为了让你理解bluebird最原始的用法)

简单的写法是这样的

var readFileAsync = Promise.promisify(fs.readFile)

转载于:https://my.oschina.net/goskyblue/blog/534634

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值