![](/img/trans.png)
[英]javascript: firebug not allowing to set breakpoint in certian scripts
[英]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]);
。
為什么您不喜歡該評論行?
//$.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.