我有一个创建我和一系列承诺的函数。我可以通过使用像
这样的东西来满足整个数组Promise.all(array).then(values => {
console.log(values); // [true, true, true]
});
但是我想要做的是验证数组的每个项目,然后使用chai期望每个值都为真。我可以使用像Promise.resolve这样的东西来指定数组中的索引并对特定的索引执行验证。
理想情况下,我想获取值数组并循环遍历数组,对每个值执行测试,直到数组完成,然后一旦完成就实现回调(因为我使用量角器)黄瓜)
在我的脑海中,我认为以下内容会起作用,但我得到的只是array.then不是函数,尽管当我在数组上保证所有数据时我都可以看到值。
array.then((values) => {
let count = 0;
values.forEach((check) => {
chai.expect(check).to.be.true();
});
count += 1;
count >= values.length ? callback() : null;
});
答案 0 :(得分:0)
您可以对派生的承诺数组应用Promise.all
,这些承诺会提供与原始承诺相同的值,但会将chai测试应用于其结果:
Promise.all(array.map(prom =>
prom.then( value => (chai.expect(value).to.be.true, value) )
)).then(values => {
console.log(values); // [true, true, true]
callback();
}).catch(err => {
console.log('failure', err);
});
答案 1 :(得分:0)
Promise.all会将promises数组解析为值数组。然后你只需要用断言迭代这些值。
var promise1 = Promise.resolve(true);
var promise2 = Promise.resolve(true);
var arrayOfPromises = [promise1, promise2]
Promise.all(arrayOfPromises).then(arrayOfValues=> {
console.log(arrayOfValues); // [true, true]
arrayOfValues.forEach((value) => {
chai.expect(value).to.be.true;
});
});