How can we use promise in node.js packages [closed

2019-03-07 04:46发布

问题:

When we write a module for node.js, we use callback functions. I learned promises in javascript and I want to use in node.js module. Can we use promises instead of callback functions ? if we can, how ?

note : via function in node module file ( you know exports.some_func ) , we do somethings and we can send back informations with callback . Can we use promise instead of that callback ?

回答1:

Can we use promise instead of that callback ?

Yes, rather than accepting a callback in your exported function, you can just return a promise and make sure that promise is resolved/rejected with the proper value/reason when the async operation is done.

Here's an example:

Imagine you have a module interface for reading a file, then you can have that interface return a promise like this:

// 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);
        });
    });
}

The caller would then use it like this:

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

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