簡體   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