gpt4 book ai didi

javascript - 环回 3 setTimeout 奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 14:18:23 29 4
gpt4 key购买 nike

loopback 的这种奇怪行为让我很困惑。我在下面创建了一个非常简单的远程方法作为示例。

Device.getTypes = function(next) {
let result = {0: {val: 10}};
setTimeout(function() {
result[0].wait = true;
}, 10);
console.log(result); // {'0': {val: 10}}
return next(null, result);
};

控制台打印出的正是我所期望的。 result[0].wait 未在此上下文中定义。但是响应的 JSON 数据真的让我很困惑。

{
"data":{
"0":{
"val": 10,
"wait": true
}
}
}

我不明白为什么 "wait": true 在那里。然后我将延迟时间增加到 100。data[0].wait 消失了。 loopback 是否在后面执行延迟?

最佳答案

此行为与环回无关,它是 node.js 的一个特性。 node.js 本质上是异步的(如果你想要一个同步代码,你需要使用一些技巧,比如 Promise,异步库,......)。但是,不仅如此。 console.log 是一个异常(exception),它是一个阻塞的 i/o 调用,在你的情况下,当你的 setTimeout 被调用的值小于阻塞时间时,你会得到 "wait": true结果,否则它会在进行更改之前返回结果。

关于javascript - 环回 3 setTimeout 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159716/

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