Предположим, что у меня есть модуль «JsonEditor» (только для примера), который имеет 3 функции: get(), setProperty() и save().Как перенести решение обещания() на другое обещание
Вот код (вопрос следующим образом):
var fs = require('fs')
, q = require('q');
var jsonEditorModule = (function() {
return {
get: function(jsonPath) {
// ...
},
save: function(jsonObject, jsonPath) {
var qJson = q.defer();
var jsonContent = JSON.stringify(jsonObject, null, 2);
fs.writeFile(jsonPath, jsonContent, function(err) {
if(err) {
qJson.reject(err);
}
else {
qJson.resolve();
}
});
return qJson.promise;
},
setProperty: function(prop, value, jsonPath) {
var self = this;
var qJson = q.defer();
this.get(jsonPath)
.then(
function(jsonObject) {
// Set the property
jsonObject[prop] = value;
// Save the file
self.save(jsonObject, jsonPath)
.then(
function() {
qJson.resolve();
},
function() {
qJson.reject();
},
);
}
);
return qJson.promise;
},
};
})();
module.exports = jsonEditorModule;
Смотрите затем() сразу после сохранения() в функции SetProperty()?
Это выглядит глупо, правда?
Нужно ли вручную разрешать() и отклонять() мое обещание? Могу ли я просто передать поведение save() моему обещанию setProperty()?
Надеюсь, что вопрос достаточно ясен (и не слишком глуп).
Благодаря
Посмотрите здесь и посмотреть, если вы можете переделки вы называете структуру, чтобы создать цепочку http://stackoverflow.com/questions/12461589/how-do-i-do-a-callback-chain-with- q –