最近我开始使用(Async& Await)。在此之前,我使用Promise使我的进程异步。像:
example.firstAsyncRequest()
.then(firstResponse => {
return example.secondAsyncRequest(firstResponse)
})
.then(secondResponse => {
return example.thirdAsyncRequest(secondResponse)
})
.then(result => {
console.log(result)
})
.catch(err => {
console.log(err)
})
现在我实现了这个目标:
try {
const firstResponse = await example.firstAsyncRequest();
const secondResponse = await example.secondAsyncRequest(firstResponse);
const thirdAsyncRequest = await example.thirdAsyncRequest(secondResponse);
console.log(thirdAsyncRequest)
}
catch (error) {
// Handle error
}
在两者中,代码块方法一个接一个地执行,最后抛出错误(如果有的话)并被catch
块捕获。我的问题是,这只是语法上的差异吗?请解释或建议我更好地理解这一点。
谢谢
答案 0 :(得分:7)
语法只有区别吗?
是。您的示例在功能上等同于,除了,您的第二个示例缺失
console.log(thirdAsyncRequest);
...在第三个await
之后。 (该变量确实应该result
以匹配第一个代码块,或thirdResponse
以匹配其他两个响应变量。)
async
/ await
是关于承诺创造和消费的语法糖。这是非常有帮助的糖,但就是这样。 async
函数返回promises,await
表达式相当于then
个回调,try
/ catch
围绕await
表达式相当于catch
回调。