繁体   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