使用 setTimeout(async function(){}) 和 setTimeout(function(){}) 有什么区别?
当请求发送到我的服务器端点时,我运行一个非障碍物 makeorder 。
如果使用 settimeout
,我想第二次运行该函数,但是我不确定是否应该在 async > settimeout 确保它不会阻止事件循环。
目前我在做什么:
if (await makeOrder(order)) {
// order was successful
} else {
// try again in 5 minutes
setTimeout(async function() {
makeOrder(order);
}, 300000);
}
这是正确的吗? ( makeorder
是否成功地返回对还是错误)
我想知道,如果我使用async,如果更多的请求到达我的端点,是否有更多请求到达我的端点,是否有区别功能与仅函数?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
async
关键字:settimeout
忽略返回值是无关紧要的)。等待
关键字,它不会停止阻止代码阻止。
使用
async
您需要在功能中管理承诺。在这种情况下,没有其他用途。您呼叫的唯一功能会返回布尔值,而不是承诺,因此您没有任何承诺要管理。添加
async
是毫无意义的(并且可能会使您或其他人在将来维护代码感到困惑)。The
async
keyword:setTimeout
ignores the return value).await
keyword inside the functionIt doesn't stop blocking code from being blocking.
Use
async
is you need to manage promises inside the function. There is no other use for it in that context.The only function you call returns a boolean, not a promise, so you don't have any promises to manage. Adding
async
is pointless (and might confuse you or other people maintaining the code in the future).您可以通过递归来完成此操作。因为您可以在下单失败后在特定的时间内重试。失败应该在 catch 块中,因为当您想在某些重试后停止操作时,它会很直观。
You can do this with recursion. As you can retry with specific duration after your make order was not successful. The failure should be in catch block as it would be intuitive when you want to stop operation after certain retries.