如果您不返回承诺并且仅使用解决方案会发生什么?

时间:2017-06-16 02:31:32

标签: javascript promise

换句话说,如果我这样做会发生什么:

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()之后触发。

我认为每一个承诺都应该归还其价值。

2 个答案:

答案 0 :(得分:3)

有问题的函数String.Compare被称为(resolve, reject) => {...}执行者函数。根据执行者

MDN docs的最后一句话
  

忽略执行程序的返回值

这可以使用这段简单的代码(从提供的示例中修改)来证明

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”。