javascript中的await关键字会使应用程序变慢吗?

时间:2018-09-13 05:41:02

标签: javascript node.js asynchronous async-await

我对NodeJS比较陌生。我想知道 await 关键字是否会减慢整个javascript / nodeJS程序的速度?

例如

如果我在一个服务器文件上写了许多快速路由器,并且一个路由器功能调用“ 等待”以承诺解决,那么所有其他路由器和异步功能将保持暂停/暂停状态直到诺言解决了?还是只是该线程将被暂停?

在这种情况下,等待调用会导致Javascript程序出现性能问题?

2 个答案:

答案 0 :(得分:2)

不。虽然 await 听起来像是在阻塞,但它是完全异步(非阻塞)的,因为 async 关键字还暗含了必需的功能签名。这是使用promise的(很多)更好的方法。因此,请继续在代码中使用它。

您还提到了线程,我建议您在开发node.js应用程序时忽略线程概念,并信任node.js事件循环。只是永远不要使用阻塞的IO调用(通过在名称中使用“同步”来明确命名该名称)。

答案 1 :(得分:2)

await等待一个诺言得到解决,但是我们知道该节点本质上是异步的,因此,将向应用程序发出其他请求,这些请求对他们没有影响,它们将不等待上一个请求诺言得到解决。解决。

示例

route 1 -> it will await and iterate through million rows and return sum in response
route 2 -> it will only return '1' in response

现在,当我们先呼叫路由1,然后呼叫路由2时,您会看到仍然可以立即从路由2获得响应,而当路由1完成时,您将获得响应。