单步执行 json 个结果,每个结果之间有延迟?

step through json results with a delay between each?

我正在加载 JSON 文件并对结果执行 $.each。但是,我希望在处理 JSON 数据中的每个项目之间有延迟。我有以下代码,但它等待 1000 毫秒,然后一次输出所有 item.time 值。

   $.getJSON("data/data.json", function() {
       }).done(function(d) {
       console.log("Got JSON");
       $d.each(function(i, item){
           setTimeout( function(){
               series.append(item.time, item.value);
               console.log(item.time)}, 1000)
       });
   });

尝试以下操作 - 对结构的某些部分进行了一些更改。

遗憾的是,由于没有任何数据集,因此未能对其进行测试。

$.getJSON( "data/data.json", function() {
    console.log( "success" );
}).done(function(data) {
    $.each( data, function( i, item ) {
        setTimeout(function () {
            series.append(item.time, item.value);
            console.log(item.time)
        }, i * 1000);
    });
})

添加了索引元素以随着每个元素的增加而增加,因为延迟需要增加,因此它的时间顺序。

示例:

假设您有 10 个数据集,现在使用 $.each 函数,您可以遍历这些数据集并将正确的元素附加到 DOM(简单...)。

现在,如果您想在每个元素之间添加一个暂停,以便加载第一个元素,然后在 1 秒后加载下一个元素,您不能使用静态 1000 毫秒 延迟。随着数据集的下降,您需要增加数字。否则,它只会等待 1000ms 然后同时显示所有内容。

将它们 space 出来,并在 $.each 函数内,你得到索引作为可以使用的回调。如此简单的实现将只是时间 (*) 超时,所以它以 1000ms 开始,然后下一个将是 2000ms (但只是一个从第一个元素延迟一秒)。

更改对 setTimeout 的调用:

       setTimeout( function(){
           series.append(item.time, item.value);
           console.log(item.time)}, i * 1000)

同时调用所有setTimeout(在循环中),它们都从现在开始执行到1000。对于 space 他们,只需将延迟乘以 index->​​ 1000 * i 即可得到所需的结果。