对于 NodeJs Promise,Await 和 Then 哪个更好?以及 Await 的工作原理

Hon*_* Bu 1 javascript asynchronous node.js async-await angular

嗨,我刚开始使用 nodejs,我阅读了一些关于异步函数的文章。有些东西真的让我很困惑,我希望在这里得到一些解释或推荐材料。

  1. 我知道在 async 函数中,我们可以使用 then 解析一个 promise,也可以使用“await”来等待 promise 解析。哪个更好?或者它们是相同的机制?
  2. 实际上,我在 nodejs 异步函数中使用了多个 await,据我所知,await 将停止脚本并等待。这听起来像是一个同步函数,对吧?那么为什么我们需要等待呢?这是在 Node 中进行编码的好方法吗?
  3. 我在 angularJS 中调用这些异步函数(使用 promise.then())来获得结果。它是如何工作的?我的意思是,当 angular 调用节点函数时会发生什么,它们如何通信?

如果有不清楚的请评论。非常感谢

Ste*_* P. 6

An async function, 始终返回一个挂起的 Promise ,该 Promise 将使用函数返回的值进行解析(因此函数异步运行)

使用await,当前函数被挂起,直到与 关联的承诺await被解决(所以下面的 javascriptawait被转换为then()等待的承诺的 a)

使用then(),你在声明 promise 后留在函数中,这意味着你可以并行启动多个 promise。

await很有趣,因为当您在继续执行函数之前必须等待结果时,它简化了代码,就像then对函数的其余部分使用 a 一样。

因为await挂起代码,所以下面的所有内容都await被推迟,包括任何新的承诺。因此,如果您想在后台启动所有 Promise,则必须在使用 any 之前声明并将它们存储到变量中await,如下所示:

var p1 = new Promise(...)
var p2 = new Promise(...)
try {
  let r1 = await p1;
  let r2 = await p2;
} catch (e) {}
Run Code Online (Sandbox Code Playgroud)