FXu*_*Xux 0 javascript loops asynchronous node.js async-await
在while循环中使用await是不好的做法吗?
我有以下代码:
// this is inside a async function
try {
let res = await api.resource.create(...args) // create resource
do {
let res = await api.resource.show(res.body.id)
if (res.body.status === 'COMPLETED')
return res.body
} while(1)
} catch (err) {
errorHandler(err)
}
Run Code Online (Sandbox Code Playgroud)
我在这里有几个问题:
先感谢您.
可以使用两个
res
变量吗?
不.使用内部方式的方式,参数中的访问始终位于临时死区,并且您将始终获得异常.
我是否会使用性能,因为我正在使用
await
while循环?
使用await
in循环没有任何问题,只要你期望它们顺序运行而不是所有迭代同时运行.
有更好的解决方案吗?
try {
let res = await api.resource.create(...args) // create resource
do {
res = await api.resource.show(res.body.id)
} while (res.body.status !== 'COMPLETED')
return res.body
} catch (err) {
errorHandler(err)
}
Run Code Online (Sandbox Code Playgroud)
还要注意,如果errorHandler
来自一个回调参数,你应该删除整个try
/ catch
并且只使用.catch(errorHandler)
该调用返回的promise.
此外,虽然我不知道是什么api.resource.show
,但看起来你正在查询结果.如果该方法只返回在正确的时间完成的承诺会更好.如果那是不可能的,你需要轮询,我建议至少在呼叫之间有一些延迟.
归档时间: |
|
查看次数: |
1590 次 |
最近记录: |