promises在npm Q中的内部循环

promisses inside loop in npm Q

本文关键字:内部 循环 npm promises      更新时间:2023-09-26

我正在实现一个代码,将所有标签保存到数据库中。如果发现一个错误,我将拒绝承诺。以下代码供参考。

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函数中的promise。

我正在使用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();
});

我认为它会解决的。