Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 环回3设置超时异常行为_Javascript_Node.js_Loopback - Fatal编程技术网

Javascript 环回3设置超时异常行为

Javascript 环回3设置超时异常行为,javascript,node.js,loopback,Javascript,Node.js,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, resul

我被
环回中的这种奇怪行为弄糊涂了。我创建了一个非常简单的远程方法,如下例所示

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);
};
控制台输出的正是我所期望的<代码>结果[0]。在此上下文中未定义等待。但是JSON数据真的让我困惑

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

我不明白为什么“等等”:真的有。然后我将延迟时间增加到100<代码>数据[0]。等待已不存在。
loopback
是否在后面执行延迟?

此行为与loopback无关,它是node.js的一项功能。本质上是异步的node.js(如果您想要同步代码,您需要使用一些技巧,例如Promise、异步库等等)。但是,不仅仅是这样。console.log是一个例外,它是一个阻塞i/o调用,在您的情况下,当使用小于阻塞时间的值调用setTimeout时,您的结果中会出现
“wait”:true
,否则它会在进行更改之前返回结果。

是的,我经常在异步回调函数中使用async或put
next()
,主要是在查询数据库时。但是昨天,我将
next()
放在了错误的位置,正如您所看到的,但是服务器仍然使用扩展数据响应结果。你的回答让我明白了一点,然后我把它标记为接受。谢谢