在 JavaScript 异步编程中,async/await 将 JavaScript 开发者从回调函数的困境中解救出来。但是随着人们对 async/await 的滥用,诞生出了新的 async/await 困境。
本文将通过几个例子,解释什么是 async/await 困境,为什么会出现 async/await 困境,以及如何逃离 async/await 困境。希望本文能够帮你了解 async/await 的基础知识,并帮你提升你的应用程序的性能。
async/await 将我们从回调函数的困境中解救出来,但是人们开始滥用它——导致了 async/await 困境的诞生。
什么是 async/await 困境
进行 JavaScript 异步编程时,人们通常一个接一个写多条语句,并在每个函数调用前标注一个 await。这导致了性能问题,因为大多数时候,一条语句并不依赖于其之前的那条语句——但是你还是必须等待之前的语句执行完毕。
async/await 困境的一个例子
假设写一个脚本来订一份披萨和一份饮料,这个脚本可能会是这样的:
(async () => {
const pizzaData = await getPizzaData() // async call
const drinkData = await getDrinkData() // async call
const chosenPizza = choosePizza() // sync call
const chosenDrink = chooseDrink() // sync call
await addPizzaToCart(chosenPizza) // async call
await addDrinkToCart(chosenDrink) // async call
orderItems() // async call
})()
GitHub 项目:baduse-example-1.js
这个