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

经常使用资料(记得收藏)

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

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的出现,缓解了这种状况node

安装

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最原始的用法)npm

简单的写法是这样的异步

var readFileAsync = Promise.promisify(fs.readFile)
相关文章
相关标签/搜索