为什么这些具有相同超时的诺言无法解决

时间:2018-10-01 19:15:48

标签: javascript ecmascript-6

看到一些使用await的代码后,我试图了解创建异步函数并返回await或仅返回promise是更好的选择。对我来说,他们实际上都应该只是兑现承诺。

return

但是用各种值运行它会产生我并不期望的结果

const P = (payload, ms) => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('promise resolved! payload ' + payload)
    }, ms)
  })
}


const verify1 = async () => {
  return await P('>>> 1', 0)
}

const verify2 = () => {
  return  P('>>> 2', 0)
}

verify1().then(message => console.log(message))
verify2().then(message => console.log(message))

当两个都被赋予return await P('>>> 1', 10) return P('>>> 2', 0) ^^^ "2" returns first - makes sense return await P('>>> 1', 0) return P('>>> 2', 10) ^^^ "1" returns first - makes sense return await P('>>> 1', 0) return P('>>> 2', 0) ^^^ "2" returns first 的超时时,为什么2首先返回?这仅仅是包装在额外承诺中的结果吗?有没有理由0

0 个答案:

没有答案