在javascript中等待关键字会降低应用程序的速度吗?

问题描述 投票:1回答:2

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

例如,

如果我在一个服务器文件上写了很多快速路由器,并且一个路由器函数调用'await'来解析一个promise,那么所有其他路由器和异步函数是否会一直停止/暂停,直到承诺得到解决?或者只是暂停该线程?

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

javascript node.js asynchronous async-await
2个回答
2
投票

不会。虽然等待听起来像是阻塞,但它是完全异步的(非阻塞),因为async关键字也隐含在所需的函数签名中。这是一种(很多)更好的方式来使用promises。所以继续在你的代码中使用它。

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


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完成后你就会得到响应。

© www.soinside.com 2019 - 2024. All rights reserved.