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

时间:2018-02-05 13:36:49

标签: 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)
})

现在我实现了这个目标:

  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块捕获。我的问题是,这只是语法上的差异吗?请解释或建议我更好地理解这一点。

谢谢

1 个答案:

答案 0 :(得分:7)

  

语法只有区别吗?

是。您的示例在功能上等同于,除了,您的第二个示例缺失

console.log(thirdAsyncRequest);

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

async / await是关于承诺创造和消费的语法糖。这是非常有帮助的糖,但就是这样。 async函数返回promises,await表达式相当于then个回调,try / catch围绕await表达式相当于catch回调。