Concernant ce qu'est une promesse et les problèmes qu'elle résout, veuillez expérimenter la méthode de codage asynchrone de rappel du nœud et passer à http://wiki.commonjs.org/wiki/Promises/A Voir Cela dépend de comment il est défini, je n'entrerai donc pas dans les détails ici.
Nous voyons ici comment utiliser q.js pour mettre en œuvre la promesse de l'API de nœud.
1. Tout commence par l'installation
npm installer q
2. Méthode de promesse de l'API de style de nœud standard
1. Utilisez Q.nfcall
Par rapport à Q.fcall, Q.nfcall est le Q.fcall du nœud.
var FS = require('fs'),
Q = exiger('q'),
couleurs = require('couleurs'),
Fichier = 'exemple.txt';
var fsReadFile = Q.nfcall(FS.readFile,file,encoding);
fsReadFile.then(fonction(résultat){
console.log((fichier « invoquer dans nfcall »).red);
console.log(result.green);
},fonction(erreur){
console.log("invoke in nfcall".red);
console.log(error.toString().red);
>
);
2. Utilisez 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)
},fonction(erreur){
console.log("invoke in denodeify".red);
console.log(error.toString().red);
>
);
3. Utilisez Q.deferd
var fsReadFile_deferd = fonction (fichier, encodage){
var différé = Q.defer();
FS.readFile(fichier,encodage,fonction(erreur,résultat){
Si(erreur){
deferred.reject(error.toString().red);
>
différé.resolve(result);
});
retourner différé.promise;
};
fsReadFile_deferd(file).then(function(result){
console.log("invoke in deferd".red);
console.log(result.toString().green);
},fonction(erreur){
console.log("invoke in deferd".red);
console.log(error.toString().red);
>
);
4. Utilisez makeNodeResolver()
var fsReadFile_makeNodeResolver = fonction (fichier, encodage){
var différé = Q.defer();
FS.readFile(file,encoding,deferred.makeNodeResolver());
Retour différé.promise;
};
fsReadFile_makeNodeResolver(file,encoding).then(function(result){
console.log("invoke in makeNodeResolver".red);
console.log(result.green);
},fonction(erreur){
console.log(error.toString().red);
});