繁体   English   中英

回送3 setTimeout奇怪的行为

[英]loopback 3 setTimeout strange behavior

我对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 然后,我将延迟时间增加到data[0].wait消失了。 loopback在后面执行延迟吗?

此行为与回送无关,它是node.js的功能。 node.js本质上是异步的(如果您想要同步代码,则需要使用一些技巧,例如Promise,异步库等)。 但是,不仅如此。 console.log是一个例外,它是一个阻塞的I / O调用,在您的情况下,如果以小于阻塞时间的值调用setTimeout,则将得到"wait": true结果为"wait": true ,否则返回结果在进行更改之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM