看到一些使用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
?