In Bezug auf das Versprechen und was das Versprechen löst, erleben Sie bitte die Asynchron -Codierungsmethode des Knotens und wechseln Sie dann zu http://wiki.commonjs.org/wiki/promises/a, um zu sehen, wie es definiert ist. Ich werde hier nicht auf Details eingehen.
Hier werden wir sehen, wie man Q.Js verwendet, um das Versprechen der Knoten -API zu implementieren.
1. Alles beginnt mit der Installation
Die Codekopie lautet wie folgt:
NPM install q
2. Versprechen Methode der Standard -API im Node -Stil -Stil
1. Verwenden Sie Q.nfcall
Im Vergleich zu Q.Fcall ist Q.NFCall die Q.fcall des Knotens.
Die Codekopie lautet wie folgt:
var fs = erfordern ('fs'),
Q = erfordern ('q'),
Farben = erfordern ('Farben'),
Datei = 'example.txt';
var fsReadFile = q.nfcall (fs.readfile, Datei, codieren);
fsReadFile.then (Funktion (Ergebnis) {
console.log (("in NFCall" + Datei) .Red);
console.log (result.green);
}, Funktion (Fehler) {
console.log ("in NFCall aufrufen" .Red);
console.log (error.toString (). rot);
}
);
2. Verwenden Sie Q.Denodeif
Die Codekopie lautet wie folgt:
var fsreadFile_denodefy = q.denodify (fs.readFile);
fsReadFile_denodefy (Datei, Codierung) .then (Funktion (Ergebnis) {
console.log ("in Denodify aufrufen" .Red);
console.log (result.green)
}, Funktion (Fehler) {
console.log ("in Denodify aufrufen" .Red);
console.log (error.toString (). rot);
}
);
3. Verwenden Sie Q.Deferd
Die Codekopie lautet wie folgt:
var fsReadFile_deferd = Funktion (Datei, Codierung) {
var deferred = q.Defer ();
Fs.ReadFile (Datei, Codierung, Funktion (Fehler, Ergebnis) {
if (Fehler) {
Deferred.Reject (error.toString (). rot);
}
aufgeschoben.Resolve (Ergebnis);
});
Rückgabe aufgeschoben.Promise;
};
fsReadFile_Deferd (Datei) .then (Funktion (Ergebnis) {
console.log ("Incoke in Deferd" .Red);
console.log (result.toString (). grün);
}, Funktion (Fehler) {
console.log ("Incoke in Deferd" .Red);
console.log (error.toString (). rot);
}
);
4. Verwenden Sie Makenoderesolver ()
Die Codekopie lautet wie folgt:
var fsReadFile_Makenoderesolver = Funktion (Datei, Codierung) {
var deferred = q.Defer ();
Fs
Rückgabe aufgeschoben.Promise;
};
fsReadFile_Makenoderesolver (Datei, Codierung) .Then (Funktion (Ergebnis) {
console.log ("in Makenoderesolver aufrufen" .Red);
console.log (result.green);
}, Funktion (Fehler) {
console.log (error.toString (). rot);
});