npm Q 中的循环内承诺
promisses inside loop in npm Q
我正在实现一个代码来将所有标签保存到数据库中。即使发现 1 个错误,我也会拒绝承诺。以下代码供参考。
module.exports = {
save_tag: function(tag, id) {
//Some logic to validate a tag goes here
return db.save(tag,id); //db.save is a promise;
},
save_tags: function(tags, post_id) {
var def = Q.defer();
_.forEach(tags, function(tag, key) {
self.save_tag(tag, post_id).then(null, def.reject);
});
return def.promise;
}
};
我想知道如果所有标签都在 save_tag
函数中成功保存,我如何解决 save_tags
函数中的承诺。
我正在使用 npm Q 库。
module.exports = {
save_tag: function(tag, id) {
return db.save(tag,id); // db.save is a promise;
},
save_tags: function(tags, post_id) {
var savedTags = _.map(tags, function(tag) {
return self.save_tag(tag, post_id);
});
return Q.all(savedTags);
}
};
https://github.com/kriskowal/q/wiki/API-Reference#promiseall
self.save_tag(tag, post_id).then(function _returnOK(){
//def.resolve();
}).fail(function _returnFail(){
//def.reject();
});
我认为它会解决。
我正在实现一个代码来将所有标签保存到数据库中。即使发现 1 个错误,我也会拒绝承诺。以下代码供参考。
module.exports = {
save_tag: function(tag, id) {
//Some logic to validate a tag goes here
return db.save(tag,id); //db.save is a promise;
},
save_tags: function(tags, post_id) {
var def = Q.defer();
_.forEach(tags, function(tag, key) {
self.save_tag(tag, post_id).then(null, def.reject);
});
return def.promise;
}
};
我想知道如果所有标签都在 save_tag
函数中成功保存,我如何解决 save_tags
函数中的承诺。
我正在使用 npm Q 库。
module.exports = {
save_tag: function(tag, id) {
return db.save(tag,id); // db.save is a promise;
},
save_tags: function(tags, post_id) {
var savedTags = _.map(tags, function(tag) {
return self.save_tag(tag, post_id);
});
return Q.all(savedTags);
}
};
https://github.com/kriskowal/q/wiki/API-Reference#promiseall
self.save_tag(tag, post_id).then(function _returnOK(){
//def.resolve();
}).fail(function _returnFail(){
//def.reject();
});
我认为它会解决。