我有一个简单的 JavaScript 代码,它在 API 中执行请求并返回响应,很简单。但在这种情况下,我会有成千上万的请求。那么,哪一个代码选项会执行得更好,为什么。另外,最近推荐哪一个作为良好实践?
第一个选项是使用 .then 来解决 promise ,第二个选项是使用 async/await。
在我的测试中,这两个选项的结果非常相似,没有显着差异,但我不确定规模。
// Using then
doSomething(payload) {
const url = 'https://link-here/consultas';
return this.axios.get(url, {
params: {
token: payload.token,
chave: payload.chave,
},
}).then(resp => resp.data);
}
// Using Async / await
async doSomething(payload) {
const url = 'https://link-here/consultas';
const resp = await this.axios.get(url, {
params: {
token: payload.token,
chave: payload.chave,
},
});
return resp.data;
}
任何解释都会很有值(value)。
最佳答案
从性能的 Angular 来看,await
只是 .then()
的内部版本(做的事情基本相同)。选择一个而不是另一个的原因实际上与性能无关,而与所需的编码风格或编码便利性有关。当然,口译员有a few more opportunities to optimize things在内部使用 await
,但您不太可能决定使用哪个。如果其他条件相同,我会选择 await
,原因如上。但是,我会首先选择使代码更易于编写、理解、维护和测试的方法。
使用得当,await
经常可以save you a bunch of lines of code making your code simpler to read, test and maintain .这就是发明它的原因。
您的代码的两个版本之间没有明显区别。无论调用axios成功还是出错,两者的结果都是一样的。
如果您有多个需要序列化的连续异步调用,await
可以带来更多便利。然后,与其将它们分别放在 .then()
处理程序中以正确链接它们,不如使用 await
并使代码看起来更简单。
await
和 .then()
的一个常见错误是忘记了正确的错误处理。如果您在此函数中的错误处理愿望只是返回被拒绝的 promise ,那么您的两个版本都会以相同的方式执行此操作。但是,如果你连续有多个异步调用,并且你想做比返回第一个拒绝更复杂的事情,那么 error handling techniques for await
and .then()
/.catch()
完全不同,哪个看起来更简单将取决于情况。
关于javascript - Async/await vs then 哪个性能最好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54495711/