Javascript npm Q中循环内的承诺

Javascript npm Q中循环内的承诺,javascript,node.js,promise,q,Javascript,Node.js,Promise,Q,我正在实现一个将所有标记保存到db的代码。即使发现一个错误,我也拒绝承诺。以下代码供参考 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_i

我正在实现一个将所有标记保存到db的代码。即使发现一个错误,我也拒绝承诺。以下代码供参考

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;
    }
};
我想知道如果在
保存标签
功能中成功保存所有标签,我如何解决
保存标签
功能中的承诺

我正在使用NPMQ库

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);
    }
};


我想它会解决的。

尽可能简单。。。非常感谢你。。。我现在的生活会很平静…你的生活平静是很容易实现的我只是想在这里做个小记录。如果您想运行每个标记而不考虑通过或失败,请使用Q.allSettled而不是Q.all
self.save_tag(tag, post_id).then(function _returnOK(){
  //def.resolve();
}).fail(function _returnFail(){
  //def.reject();
});