当我们为node.js编写模块时,我们使用回调函数。我在javascript中学习了promises,我想在node.js模块中使用。我们可以使用promises而不是回调函数吗?如果我们可以,怎么样?
注意:通过节点模块文件中的函数(你知道exports.some_func),我们做了一些事情,我们可以通过回调发回信息。我们可以使用promise而不是回调吗?
答案 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
});