async function delay(t) {
return new Promise(f=>setTimeout(f, t))
}
async function delay100() {
return await delay(100) // <---- do we need 'await' here?
}
async function main(){
await delay100(); console.log('ok')
await delay100(); console.log('ok')
await delay100(); console.log('ok')
await delay100(); console.log('ok')
}
main()
我看不出太大的区别,但是想知道是否更好地执行async函数中的async返回值?是什么原因会优先选择一种解决方案?是否有性能,可移植性,可用性或语义方面的考虑?
答案 0 :(得分:3)
实际上,它们是相同的,因为JS具有自动展开的Promises。使用任何您觉得自己更舒服/更易读的东西。
话虽如此
通常,使用await
返回Promise<T>
,而如果没有await
,则返回Promise<Promise<T>>
。 (再次澄清,实际上两者都会产生完全相同的结果,甚至产生完全相同的返回类型。)
答案 1 :(得分:0)
在返回之前先返回好不会有任何区别,但是在调用函数之前等待会有所不同。请参见下面的代码段。
async function delay(t) {
return new Promise(f=>setTimeout(f, t))
}
async function delay100(input) {
return await delay(input)
}
async function main(){
delay100(100).then(()=>console.log('ok1'));
delay100(2000).then(()=>console.log('ok2'));
delay100(140).then(()=>console.log('ok3'));
delay100(160).then(()=>console.log('ok4'));
}
main()
async function delay(t) {
return new Promise(f=>setTimeout(f, t))
}
async function delay100(input) {
return delay(input)
}
async function main(){
await delay100(100).then(()=>console.log('ok1'));
await delay100(2000).then(()=>console.log('ok2'));
await delay100(140).then(()=>console.log('ok3'));
await delay100(160).then(()=>console.log('ok4'));
}
main()