javascript 在网络呼叫中不使用“等待”可以吗

wztqucjr  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(124)

我使用的应用程序几乎在每次点击按钮时都会触发分析事件,虽然这些事件会触发对分析服务器的网络调用,但我们一直没有使用await,因为1)我们并不真正关心此调用是否失败,2)当我们避免在每次点击按钮时等待网络调用时,它会使我们的UI更快。
这是不好的做法吗?

jutyujz0

jutyujz01#

在继续之前,你不需要await这些调用,但是如果你关心正确处理错误,你应该附加一个.catch()调用。添加一个.catch()调用将允许你的应用程序逻辑不间断地继续,同时仍然允许你处理错误。如果对错误没有什么可做的(没有重试,没有报告,什么都没有),那么你可以让拒绝过去。
每次你创建一个没有await.catch()的承诺,就相当于调用一个没有try-catch Package 器的函数,如果你觉得可以,那就可以了。
我个人建议至少添加一个.catch(console.error)或者甚至.catch(() => {}),要知道.catch(() => {})会自动丢弃任何拒绝,所以只有当你 * 真的真的*不在乎结果时才使用它。

h7wcgrx3

h7wcgrx32#

我认为这主要取决于你的期望/目标。如果调用不需要完全完成就可以使用你的应用程序,那么使用await可能对你的情况毫无用处。一般来说,当你必须等待响应完成才能继续执行应用程序时,await/async是需要的。
然而,正如其他人提到的,你应该考虑你的错误策略。如果一个Firebase调用失败了怎么办?你需要恢复一些东西,通知你的用户,或者其他什么吗?通常,你应该总是有一个错误策略。所以,你不必使用await/async,但是你至少应该在你的调用之后使用.catch()来管理错误状态。

ql3eal8s

ql3eal8s3#

不调用await没有什么错。
首先,什么是await,它只是一个语法上的糖,用同步的方式来表达异步操作,经验法则是:仅当以下任一条件为真时,使用await才有意义:
1.你想在事情做完后马上做
1.您需要分配从其Promise返回的值
否则它对await没有意义。

相关问题