我对NodeJS比较陌生。我想知道await关键字是否会减慢整个javascript / nodeJS程序的速度?
例如,
如果我在一个服务器文件上写了很多快速路由器,并且一个路由器函数调用'await'来解析一个promise,那么所有其他路由器和异步函数是否会一直停止/暂停,直到承诺得到解决?或者只是暂停该线程?
在这种情况下,await调用会导致Javascript程序出现性能问题吗?
不会。虽然等待听起来像是阻塞,但它是完全异步的(非阻塞),因为async关键字也隐含在所需的函数签名中。这是一种(很多)更好的方式来使用promises。所以继续在你的代码中使用它。
您还提到了线程,我建议您在开发node.js应用程序时忽略线程概念并信任node.js事件循环。永远不要使用阻塞IO调用(通过在名称中使用'Sync'来明确命名)。
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完成后你就会得到响应。