[英]Consecutive calls to console.log produce inconsistent results
好吧,我完全被這個目瞪口呆。 (我可能會忽略一些明顯但......)
我連續2次調用console.log。 他們之間沒有別的東西
console.log($state);
console.log($state.current);
這是生成結果的圖像
為什么2會產生不同的“當前”物體? 怎么會發生這種情況?
這些調用是在解析路由依賴關系時在ajax調用中進行的。 如果您需要更多代碼或上下文,請告訴我們。
在Chrome和Firefox中確認了同樣的問題
Ajax調用和包裝函數(無論如何都沒有修改)
normaCtrl.publicNorma = ['$http', '$state', '$stateParams', 'baseUrl', function ($http, $state, $stateParams, baseUrl)
{
var id = $stateParams.id;
return $http.get(baseUrl + "api/public/norma/" + id).then(
function (response) {
console.log($state);
console.log($state.current);
console.log($state.current.title);
return response.data;
}
);
}];
嗯,這是那些偶然發現的人的答案。
Console.log在最后的執行狀態下顯示深度可變對象,而不是在調用console.log時的狀態 。
基本上,當使用可變深度對象時,Console.log存儲對所述對象的引用,而不是存儲對象克隆。
由於存儲和可視化之間存在時間差,因此當您單擊箭頭進行進一步檢查時,您所看到的實際上是對象的當前狀態,而不是調用console.log時對象的狀態 。
始終確保使用“對象快照”的一種方法是調用Json.stringify
或在可用時使用console.dir
。
奇怪的。 它是一個ECMA 5對象有一個奇怪的吸氣劑? 普通的$ state調用仍然沒有意義。 我認為你的GC不僅僅有一些問題......
你確定這些是被記錄的電話嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.