在promise中变异对象并通过promise promise返回

时间:2017-05-15 06:24:55

标签: javascript validation promise variable-assignment

我通过一堆验证器传递一个对象,需要在解析或拒绝一个承诺之前检查它们是否全部通过。

我通过我的验证器进行映射来实现这一点,验证器保存在引用每个函数的数组中var validators = [validateId, validate...]

有些验证者是承诺,有些则不是。例如,validateId就是

if(!this.id) this.error = 'an id must be provided';
console.log('this contains the error!', this);
return this; // I've also tried return Object.assign({},this);

我通过验证器运行对象,如下所示:

return new Promise(function(resolve, reject) {
        Promise.all(validations.map(function(validate) {
            return validate.call(view);
        })).then(function(validViews){
            console.log('no errors in this array of objects :(', validViews);
            var validView = Object.assign({}, ...validViews);
            console.log('this never has the error :(', validView);
            if(validView.error) return reject({error: validView.error});
            return resolve(validView);
        });
    });

我的期望是,如果任何验证器返回带有error属性的对象,我会拒绝,否则,返回合并的对象。

由于某种原因,validViews数组中没有返回的对象具有error属性,即使我可以在验证器函数中看到控制台行中打印的属性;

0 个答案:

没有答案