In node.js q.js is used to realize the promise of API

  • 2020-03-30 03:58:11
  • OfStack

About what is the promise and promise to solve is what problem, please let us experience the callback asynchronous node coding solution, helping to set (link: http://wiki.commonjs.org/wiki/Promises/A) to see is defined at first sight, go here.

Here's how to implement the promise of the node API using q.js.

1. Everything starts with install


npm install q

Ii. Promising method of standard node style API

1. Use q.nfcall

Compared with q.fcall, q.nfcall is the q.fcall of node.


var FS = require('fs'),
    Q   = require('q'),
    colors = require('colors'),
    file = 'example.txt';
var fsReadFile = Q.nfcall(FS.readFile,file,encoding);
fsReadFile.then(function(result){
console.log(( " invoke in nfcall " + file).red);
console.log(result.green);
},function(error){
console.log( " invoke in nfcall " .red);
console.log(error.toString().red);
}
);

2. Use q.docodeify


var fsReadFile_denodeify = Q.denodeify(FS.readFile);
 
fsReadFile_denodeify(file,encoding).then(function(result){
    console.log("invoke in denodeify".red);
    console.log(result.green)
},function(error){
    console.log("invoke in denodeify".red);
    console.log(error.toString().red);
}
);

3. Use q.deferd


var fsReadFile_deferd = function(file,encoding){
    var deferred = Q.defer();
    FS.readFile(file,encoding,function(error,result){
    if(error){
        deferred.reject(error.toString().red);
    }
    deferred.resolve(result);
});
 
return deferred.promise;
};
 
fsReadFile_deferd(file).then(function(result){
    console.log("invoke in deferd".red);
    console.log(result.toString().green);
},function(error){
    console.log("invoke in deferd".red);
    console.log(error.toString().red);
}
);

4. Use makeNodeResolver()


var fsReadFile_makeNodeResolver = function(file,encoding){
    var deferred = Q.defer();
    FS.readFile(file,encoding,deferred.makeNodeResolver());
    return deferred.promise;
};
 
fsReadFile_makeNodeResolver(file,encoding).then(function(result){
    console.log("invoke in makeNodeResolver".red);
    console.log(result.green);
},function(error){
    console.log(error.toString().red);
});


Related articles: