gpt4 book ai didi

javascript - 无法理解 NodeJS 中的一些基本逻辑

转载 作者:行者123 更新时间:2023-11-30 16:26:58 24 4
gpt4 key购买 nike

下面的代码是一个nodeJS代码。我是 nodeJS 的新手,我对 nodejs 中的代码流很困惑,因为它告诉我 nodejs 是单线程的,另一方面它也告诉我们回调和 IO 是异步的,如果我没记错的话。谁能告诉我回调的实际含义以及代码是如何工作的。是不是我们作为回调调用的异步函数是由其他线程/进程执行的,而不是由单个 nodejs 线程执行的(PS-这是我理解的概念......我可能错了),那么为什么我们r callng nodejs 作为单线程程序。

function placeOrder(orderNo) {


setTimeout(function() {
deliver(orderNo);
}, 5000);
console.log("Order is: " + orderNo);

}

function deliver(orderNo) {
console.log("Item is delivered with Order No.- " + orderNo);
}

placeOrder(1);
placeOrder(2);
placeOrder(3);
placeOrder(4);
placeOrder(5);
placeOrder(6);

最佳答案

Nodejs 是单线程的。有一个事件循环持续运行并执行它必须执行的任何指令。所以基本上,当您以 5 秒的间隔使用 setTimeout 函数时,它会放置一些代码,让事件循环在 5 秒后执行。当然,如果此时事件循环正忙于执行一些其他代码,它会将您的代码的执行推迟到稍后阶段。所以它可能不会在 5 秒后执行,而是在 5.1 秒后执行。

因此,当您调用 setTimeout(function() { ... }, 5000); 时,您正在安排一些 javascript 代码在事件循环至少 5 秒后执行。

关于javascript - 无法理解 NodeJS 中的一些基本逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33984536/

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