我什么时候应该使用 async/await 什么时候应该使用回调 [js]?
When should I be using async/await and when should I be using callbacks [js]?
我的 API 调用通常采用类似于此的回调模式进行格式化:
axios.get('http://localhost:8080/api/announcements')
.then((res) => res)
.catch((err) => err)
不过,我最近遇到了 async/await,下面的函数似乎做同样的事情,但更简洁。
const response = await axios.get('http://localhost:8080/api/announcements');
return response
什么时候应该使用回调模式,什么时候应该使用async/await?
它们只是两种不同语法中的同一件事,在它们之间进行选择只是个人喜好。对我来说,我总是选择 async/await
而不是 .then()
和 .catch()
因为:
- 更容易实现复杂的异步逻辑:有了
.then()
,剩下的程序,如果你想在任务完成后运行 , 必须位于 .then()
块中。如果你需要再次 return 一个 promise,你需要使用 chained .then()
。对于更复杂的情况(解决之前的多个承诺、承诺循环等),解决方案变得更加难以实施。有多种情况我必须重写 async/await
. 中的所有代码
- 熟悉的跨语言语法:使用
async/await
,代码就像任何普通代码一样编写。我可以轻松地使用循环、多重承诺和正常的 'return' 到 return 等待值。 .catch
通常不存在于其他语言中,而是一个 try catch
块,使使用其他语言的人更容易理解。
我的 API 调用通常采用类似于此的回调模式进行格式化:
axios.get('http://localhost:8080/api/announcements')
.then((res) => res)
.catch((err) => err)
不过,我最近遇到了 async/await,下面的函数似乎做同样的事情,但更简洁。
const response = await axios.get('http://localhost:8080/api/announcements');
return response
什么时候应该使用回调模式,什么时候应该使用async/await?
它们只是两种不同语法中的同一件事,在它们之间进行选择只是个人喜好。对我来说,我总是选择 async/await
而不是 .then()
和 .catch()
因为:
- 更容易实现复杂的异步逻辑:有了
.then()
,剩下的程序,如果你想在任务完成后运行 , 必须位于.then()
块中。如果你需要再次 return 一个 promise,你需要使用 chained.then()
。对于更复杂的情况(解决之前的多个承诺、承诺循环等),解决方案变得更加难以实施。有多种情况我必须重写async/await
. 中的所有代码
- 熟悉的跨语言语法:使用
async/await
,代码就像任何普通代码一样编写。我可以轻松地使用循环、多重承诺和正常的 'return' 到 return 等待值。.catch
通常不存在于其他语言中,而是一个try catch
块,使使用其他语言的人更容易理解。