我们如何在node.js包中使用promise

时间:2016-05-24 18:58:01

标签: javascript node.js promise package

当我们为node.js编写模块时,我们使用回调函数。我在javascript中学习了promises,我想在node.js模块中使用。我们可以使用promises而不是回调函数吗?如果我们可以,怎么样?

注意:通过节点模块文件中的函数(你知道exports.some_func),我们做了一些事情,我们可以通过回调发回信息。我们可以使用promise而不是回调吗?

1 个答案:

答案 0 :(得分:1)

  

我们可以使用promise而不是回调吗?

是的,不是在导出的函数中接受回调,而是在异步操作完成时返回一个promise并确保使用正确的值/原因解析/拒绝promise。

以下是一个例子:

想象一下,您有一个用于读取文件的模块接口,然后您可以让该接口返回这样的承诺:

// myFileModule.js
const fs = require('fs);

module.exports.getFile = function(filename, options) {
    return new Promise(function(resolve, reject) {
        fs.readFile(filename, options, function(err, data) {
            if (err) return reject(err);
            resolve(data);
        });
    });
}

然后调用者会像这样使用它:

const myFiles = require('myFileModule.js');

myFiles.getFile('temp.txt').then(function(data) {
    // process data here
}, function(err) {
    // got an error here
});