gpt4 book ai didi

node.js - 回调问题太多

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:46 26 4
gpt4 key购买 nike

我知道在nodejs中推荐写异步函数。但是,我觉得异步编写一些非IO事件并不是那么必要。我的代码可能会变得不那么方便。例如:

//sync
function now(){
return new Date().getTime();
}
console.log(now());

//async
function now(callback){
callback(new Date().getTime());
}
now(function(time){
console.log(time);
});

在这种情况下,sync 方法会阻塞 CPU 吗?这足以让我改用 async 吗?

最佳答案

如果被调用的方法可以长时间阻塞等待 IO,那么异步样式是必需的。由于 node.js 事件循环是单线程的,因此您希望在 IO 期间屈服于事件循环。如果您不这样做,则每个时间点可能只有一个未完成的 IO。这将导致完全不可扩展。

对 CPU 工作使用回调无济于事。它不会解除事件循环的阻塞。事实上,对于 CPU 工作来说,解除事件循环的阻塞是不可能的。 CPU必须被占用一定的时间,这是不可避免的。 (忽略这里的网络 worker 之类的东西)。

回调不是什么好东西。当您必须时,您可以使用它们。它们是 node.js 事件循环 IO 模型的必然结果。

也就是说,如果您稍后计划将 IO 引入 now,您可能会急切地使用回调样式,即使并非绝对必要。稍后从同步调用更改为基于回调的调用可能会很耗时,因为回调样式是病毒式传播的。

关于node.js - 回调问题太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25341806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com