const parentFunction = () = > {
// ... делаю дела
// теперь мне нужны данные с удаленного сервера
getUserData().then(data => {
// получила данные
// ... что то делаю с этими данными
})
}
const parentFunction = async () = > {
// ... делаю дела
// теперь мне нужны данные с удаленного сервера
const data = await getUserData() // получила данные
// ... что то делаю с этими данными
}
async/await 语法使我们能够像处理同步代码一样处理异步代码。
考虑一个简单的例子,其中某个函数向我们返回了一个可以与之交互的 Promise:
如果我们使用Promise 类的方法,我们会得到结果:
您可以在其中看到最初的嵌套,随着我们的逻辑变得更加复杂并依赖于其他异步请求,这种嵌套只会增加。
但是,如果我们使用async/await ,我们可以解决这个问题:
这种语法对于复杂的场景特别有用,还有循环、try/catch结构等等。
而且也没有无极地狱。
async比较/await和是不正确的Promise,因为任何async函数都返回相同的Promise。因此,它们没有什么不同。
基本上
await只是一个方便的符号then。同样地
因此,具体使用什么以及在什么情况下可能仅取决于团队内部的协议。
还值得一提的是使用循环。
await如果循环的每次迭代都必须等待某个异步操作完成,那么编写起来会更容易,但是,如果迭代运行独立的异步函数,那么await它将无济于事。并等待所有正在运行的操作,您可以使用Promise.all