![](/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.