Async / await vs那么哪个性能最好?
我在JavaScript中有一个简单的代码,它在API中执行请求并返回响应,这很简单。但在这种情况下,我会有成千上万的请求。那么,哪一个代码选项会表现得更好,以及为什么。这些天哪一个被推荐为好的实践?
第一个选项是使用.then来解析promises,第二个选项是使用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;
}
任何解释都很有价值。
回答如下: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()
的常见错误是忘记正确的错误处理。如果您在此函数中的错误处理需求仅返回被拒绝的承诺,那么您的两个版本都会完全相同。但是,如果你连续有多个异步调用,并且你想做更复杂的事情,而不仅仅是返回第一次拒绝,那么error handling techniques for await
and .then()
/.catch()
是完全不同的,看起来更简单将取决于具体情况。