Um zu erfahren, was ein Versprechen ist und welche Probleme es löst, lernen Sie bitte die asynchrone Callback-Codierungsmethode von Node kennen und gehen Sie zu http://wiki.commonjs.org/wiki/Promises/A Siehe „Es hängt davon ab“. wie es definiert ist, daher werde ich hier nicht näher darauf eingehen.
Hier sehen wir uns an, wie man q.js verwendet, um das Versprechen der Node-API umzusetzen.
1. Alles beginnt mit der Installation
npm install q
2. Promise-Methode der Standard-Knotenstil-API
1. Verwenden Sie Q.nfcall
Im Vergleich zu Q.fcall ist Q.nfcall der Q.fcall des Knotens.
var FS = require('fs'),
Q = require('q'),
farben = require('colors'),
Datei = 'example.txt';
var fsReadFile = Q.nfcall(FS.readFile,file,encoding);
fsReadFile.then(function(result){
console.log((„in nfcall“-Datei aufrufen).red);
console.log(result.green);
},function(error){
console.log(“invoke in nfcall”.red);
console.log(error.toString().red);
}
);
2. Verwenden Sie Q.denodeify
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. Verwenden Sie 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. Verwenden Sie makeNodeResolver()
var fsReadFile_makeNodeResolver = function(file,encoding){
var deferred = Q.defer();
FS.readFile(file,encoding,deferred.makeNodeResolver());
Rückgabe 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);
});