换句话说,如果我这样做会发生什么:
const setBuildingPayload = new Promise((resolve, reject) => {
this.buildingForm.schema.forEach(() => {
setTimeout(() => {
resolve()
}, 3000)
})
})
而不是这个?
const setBuildingPayload = new Promise((resolve, reject) => {
return this.buildingForm.schema.map(() => {
return setTimeout(() => {
resolve()
}, 3000)
})
})
我问这个是因为我在setBuildingPayload
使用Promise.all
而没有返回工作时感到惊讶(Promise.all
中的代码在resolve()
之后触发。
我认为每一个承诺都应该归还其价值。
答案 0 :(得分:3)
有问题的函数String.Compare
被称为(resolve, reject) => {...}
的执行者函数。根据执行者
忽略执行程序的返回值
这可以使用这段简单的代码(从提供的示例中修改)来证明
Promise
请注意const setBuildingPayload = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Done");
}, 1000);
return 100;
});
setBuildingPayload.then(result => {
console.log(result);
});
如何没有任何区别。因此,第二段代码中的回报也没有区别。
答案 1 :(得分:1)
return this.buildingForm.schema.map
对Promise如何解决没有影响。它是一个未使用的返回值以及我们的团队喜欢称之为“for funsies”。