使用async/await与使用Promise有何不同?

Pus*_*mar 4 javascript node.js

最近我开始使用(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)
})
Run Code Online (Sandbox Code Playgroud)

现在我实现这个目标:

  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
  }
Run Code Online (Sandbox Code Playgroud)

在两者中,代码块方法一个接一个地执行,最后抛出一个错误(如果有的话)并被catch块捕获.我的问题是,这只是语法上的差异吗?请解释或建议我更好地理解这一点.

谢谢

T.J*_*der 7

只有语法上的差异吗?

是.您的示例在功能上是等效的,只是缺少第二个示例

console.log(thirdAsyncRequest);
Run Code Online (Sandbox Code Playgroud)

...在第三个之后await.(该变量确实应该result匹配第一个代码块,或thirdResponse匹配其他两个响应变量).

async/ await是围绕承诺创造和消费的语法糖.它真的很有用,但就是这样.async函数返回promises,await表达式相当于then回调,而try/ catcharound await表达式相当于一个catch回调.