Что касается того, что такое обещание и какое обещание решает, пожалуйста, попробуйте метод асинхронного кодирования асинхронного кодирования, а затем перейдите на http://wiki.commonjs.org/wiki/promises/a, чтобы увидеть, как это определено. Я не буду вдаваться в подробности здесь.
Здесь мы увидим, как использовать Q.JS для реализации обещания API узла.
1. Все начинается с установки
Кода -копия выглядит следующим образом:
NPM Установка Q.
2. Способ обещания стандартного API стиля узла
1. Используйте Q.nfcall
По сравнению с q.fcall q.nfcall является q.fcall узла.
Кода -копия выглядит следующим образом:
var fs = require ('fs'),
Q = require ('q'),
цвета = require ('colors'),
file = 'example.txt';
var fsreadfile = q.nfcall (fs.readfile, file, кодирование);
fsreadfile.then (function (result) {
console.log (("invoke in nfcall" + file) .red);
console.log (result.green);
}, функция (ошибка) {
console.log ("invoke in nfcall" .red);
console.log (error.toString (). Red);
}
);
2. Используйте Q.Denodeify
Кода -копия выглядит следующим образом:
var fsreadfile_denodeify = q.denodeify (fs.readfile);
fsreadfile_denodeify (файл, кодирование) .then (function (result) {
console.log ("invoke in denodeify" .red);
console.log (result.green)
}, функция (ошибка) {
console.log ("invoke in denodeify" .red);
console.log (error.toString (). Red);
}
);
3. Используйте Q.Deferd
Кода -копия выглядит следующим образом:
var fsreadfile_deferd = function (файл, кодирование) {
var deferred = q.defer ();
Fs.readfile (файл, кодирование, функция (ошибка, результат) {
if (ошибка) {
deferred.reject (error.toString (). Red);
}
отсрочен. Resolve (результат);
});
return DEFERRED.PROMISE;
};
fsreadfile_deferd (file) .then (function (result) {
console.log ("inloke in deferd" .red);
console.log (result.toString (). Green);
}, функция (ошибка) {
console.log ("inloke in deferd" .red);
console.log (error.toString (). Red);
}
);
4. Используйте makenoderesolver ()
Кода -копия выглядит следующим образом:
var fsreadfile_makenoderesolver = function (файл, кодирование) {
var deferred = q.defer ();
Fs.readfile (файл, кодирование, deferred.makenoderesolver ());
return DEFERRED.PROMISE;
};
fsreadfile_makenoderesolver (файл, кодирование) .then (function (result) {
console.log ("вызвать в Makenoderesolver" .red);
console.log (result.green);
}, функция (ошибка) {
console.log (error.toString (). Red);
});