簡體   English   中英

javascript僅在firebug中設置斷點后執行

[英]javascript only execute after set breakpoint in firebug

我有一個程序。

$(document).ready(function(){
    var tmpArray = [];
    var x;
    var y;
    $.plot($("#chart"), [ tmpArray]);   
    $.getJSON("111.json", function(data) {
        var i = 0, dataSize = data.length;
        for(i; i < dataSize; i++){
            var x = parseFloat(data[i].Time.substring(0, data[i].Time.length -2).replace(/:/g, ""));
            var y = parseFloat(data[i].Bid) ;
            tmpArray.push ( [x,y]);
        }           
    //$.plot($("#chart"), [ tmpArray]); 
    });
    $.plot($("#chart"), [tmpArray]);    
});

實際上,當“ $ .plot($(”#chart“),[tmpArray]);” 在getJSON()中,它可以很好地工作。 但是,當我將它放在getJSON()之外時,它將無法工作。 但是,如果我在此處放置一個斷點並對其進行跨步,它將起作用。 有人可以告訴我為什么嗎? 放進去,在網絡瀏覽器中效果很好,但在android中效果很好。 它在android上有效,但僅在getJSON()函數內部。

您必須執行$.plot($("#chart"), [tmpArray]); 之后,您將回調JSON API。 您需要填充tmpArray ,可以使用“ success: callback ”,然后執行$.plot($("#chart"), [tmpArray]);

jQuery文檔

為什么您不喜歡該評論行?

//$.plot($("#chart"), [ tmpArray]);

如果您取消注釋此行並在“ getJson”之外注釋,它將正常工作

由於要進行異步調用以獲取數據,因此要使用它,必須將使用它的代碼放在異步調用的回調中。

意思是, $.getJSON("111.json"啟動一個進入服務器的“線程”並從111.json檢索值。但是普通的“線程”繼續執行$.plot($("#chart"), [tmpArray]);無需等待異步調用完成(本質上是異步的定義)。

因此,您必須放入$.plot($("#chart"), [tmpArray]); function(data {}) ,因為這是在異步調用完成后觸發的回調。

還有一件事...您在其中放置一個斷點的原因是因為您實際上是在讓異步調用完成(因為它可能在$.plot($("#chart"), [tmpArray]);一秒內返回),然后運行$.plot($("#chart"), [tmpArray]); ...這給人一種幻想,即它應該在調試器不妨礙的情況下工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM