Mengenai janji apa itu dan apa yang dipecahkan janji, harap alami metode pengkodean callback asinkron dari Node, dan kemudian pindah ke http://wiki.commonjs.org/wiki/promises/a untuk melihat bagaimana itu didefinisikan. Saya tidak akan membahas detailnya di sini.
Di sini kita akan melihat cara menggunakan q.js untuk mengimplementasikan janji API simpul.
1. Semuanya dimulai dengan instalasi
Salinan kode adalah sebagai berikut:
NPM Instal q
2. Metode janji API Gaya Node Standar
1. Gunakan q.nfcall
Dibandingkan dengan q.fcall, q.nfcall adalah q.fcall dari node.
Salinan kode adalah sebagai berikut:
var fs = membutuhkan ('fs'),
Q = membutuhkan ('q'),
warna = membutuhkan ('warna'),
file = 'example.txt';
var fsreadfile = q.nfcall (fs.readfile, file, encoding);
fsreadfile.then (function (hasil) {
console.log (("Invoke in NFCall" + file) .red);
console.log (result.green);
}, function (error) {
console.log ("Invoke in nfcall" .red);
console.log (error.tostring (). merah);
}
);
2. Gunakan q.denodeify
Salinan kode adalah sebagai berikut:
var fsreadfile_denodeify = q.denodeify (fs.readfile);
fsreadfile_denodeify (file, encoding) .then (function (hasil) {
console.log ("Invoke in Denodeify" .red);
Console.log (result.green)
}, function (error) {
console.log ("Invoke in Denodeify" .red);
console.log (error.tostring (). merah);
}
);
3. Gunakan Q.Deferd
Salinan kode adalah sebagai berikut:
var fsreadfile_deferd = function (file, encoding) {
var ditangguhkan = q.defer ();
Fs.readfile (file, pengkodean, fungsi (kesalahan, hasil) {
if (error) {
ditangguhkan.
}
Deferred.Resolve (hasil);
});
return ditangguhkan.promise;
};
fsreadfile_deferd (file) .then (function (hasil) {
console.log ("Invoke in Deferd" .red);
console.log (result.tostring (). hijau);
}, function (error) {
console.log ("Invoke in Deferd" .red);
console.log (error.tostring (). merah);
}
);
4. Gunakan makenoderesolver ()
Salinan kode adalah sebagai berikut:
var fsreadfile_makenoderesolver = function (file, encoding) {
var ditangguhkan = q.defer ();
Fs.readfile (file, encoding, defred.makenoderesolver ());
return ditangguhkan.promise;
};
fsreadfile_makenoderesolver (file, encoding) .then (function (hasil) {
console.log ("Invoke in Makenoderesolver" .red);
console.log (result.green);
}, function (error) {
console.log (error.tostring (). merah);
});