Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中为loopin添加setInterval函数_Javascript_Jquery - Fatal编程技术网

在javascript中为loopin添加setInterval函数

在javascript中为loopin添加setInterval函数,javascript,jquery,Javascript,Jquery,我已经编写了一个for循环,用于获取变量对象中的信息,现在我正在尝试在循环中使用setInterval函数,该函数将循环数据,每次显示一条数据,同时循环顺序: var i = 0; var twitterData = { tweet1 : [{ user: { profile_image_url : "assets/avatar.png", name : "@Hodor" }, text :

我已经编写了一个for循环,用于获取变量对象中的信息,现在我正在尝试在循环中使用setInterval函数,该函数将循环数据,每次显示一条数据,同时循环顺序:

var i = 0;
var twitterData = {
    tweet1 : [{
        user: {
            profile_image_url : "assets/avatar.png",
            name : "@Hodor"
        },
        text : "Hodor Hodor Hodor Hodor Hodor Hodor Hodor..... Hodor"
    }],
    tweet2 : [{
        user: {
            profile_image_url : "assets/avatar.png",
            name : "@johnsnow"
        },
        text : "Someone once said that I know nothing..."
    }],
    tweet3 : [{
        user: {
            profile_image_url : "assets/avatar.png",
            name : "@drwho"
        },
        text : "Fantastic!"
    }]
};

sqTweetData = getTweetData();

function getTweetData() {
    return twitterData;
}

for (var k in sqTweetData) {

    // Gives me object {tweet1: Array[1], tweet2: Array[1]. tweet3: Array[1]}
    console.log("sqTweetData = ",sqTweetData);

    for (var l = 0; l < sqTweetData[k].length; l++) {
        var foo = sqTweetData[k][l]
        // Loops sqTweetData and returns object {user: object, text: "hodor hodor hodor etc"}
        console.log("foo = ", foo);

        setInterval(function() {
            // returns the last object for tweet3 and does NOT display tweet1, tweet2, tweet3 in that order over 3000ms
            console.log(foo);
            i++;
        }, 3000);
    }

}
var i=0;
变量twitterData={
推特1:[{
用户:{
profile_image_url:“assets/avatar.png”,
姓名:“@Hodor”
},
文字:“Hodor Hodor Hodor Hodor Hodor Hodor Hodor…..Hodor”
}],
推特2:[{
用户:{
profile_image_url:“assets/avatar.png”,
姓名:“@johnsnow”
},
文字:“有人曾经说我什么都不知道……”
}],
推特3:[{
用户:{
profile_image_url:“assets/avatar.png”,
姓名:“@drwho”
},
文字:“太棒了!”
}]
};
sqTweetData=getTweetData();
函数getTweetData(){
返回twitter数据;
}
for(sqTweetData中的var k){
//给我对象{tweet1:Array[1],tweet2:Array[1]。tweet3:Array[1]}
log(“sqTweetData=,sqTweetData”);
对于(var l=0;l
我遇到的问题是,一旦进入setInterval函数,它只显示最后的数据(即tweet3)并反复循环该片段。它不是循环遍历数据并按顺序显示。想法?

var i=0;
var i = 0;
var twitterData = {
  tweet1: [{
    user: {
      profile_image_url: "assets/avatar.png",
      name: "@Hodor"
    },
    text: "Hodor Hodor Hodor Hodor Hodor Hodor Hodor..... Hodor"
  }],
  tweet2: [{
    user: {
      profile_image_url: "assets/avatar.png",
      name: "@johnsnow"
    },
    text: "Someone once said that I know nothing..."
  }],
  tweet3: [{
    user: {
      profile_image_url: "assets/avatar.png",
      name: "@drwho"
    },
    text: "Fantastic!"
  }]
};

sqTweetData = getTweetData();

function getTweetData() {
  return twitterData;
}

// count variable to increment timeout 
count = 1;
for (var k in sqTweetData) {

  // use self executing anonymous function to create a new scope
  (function(k) {
    for (var l = 0; l < sqTweetData[k].length; l++) {
      var foo = sqTweetData[k][l]

      // using setTimeout and incrementing the delay by count
      setTimeout(function() {
        console.log(foo);
        i++;
      }, 3000 * count);
    }
    count++;
  })(k)
}
变量twitterData={ 推特1:[{ 用户:{ profile_image_url:“assets/avatar.png”, 姓名:“@Hodor” }, 文字:“Hodor Hodor Hodor Hodor Hodor Hodor Hodor…..Hodor” }], 推特2:[{ 用户:{ profile_image_url:“assets/avatar.png”, 姓名:“@johnsnow” }, 文字:“有人曾经说我什么都不知道……” }], 推特3:[{ 用户:{ profile_image_url:“assets/avatar.png”, 姓名:“@drwho” }, 文字:“太棒了!” }] }; sqTweetData=getTweetData(); 函数getTweetData(){ 返回twitter数据; } //计数变量以增加超时 计数=1; for(sqTweetData中的var k){ //使用自动执行匿名函数创建新作用域 (职能(k){ 对于(var l=0;l

编辑:首先,设置了一个setInterval,而不是超时。还有关闭问题。使用自实例化函数可以解决此问题。最后一件事是setTimeout需要增加。我添加了一个增加延迟的计数变量,这样每个日志的记录间隔为3000毫秒

您介意解释一下更改吗?这里的首要答案是:好的,当它循环时,它会立即给我tweet1、tweet2、tweet3。。。。它不应该循环并给我tweet1,等3秒钟,给我tweet2,等3秒钟,给我tweet3吗?哦,是的,应该是setTimeout而不是setInterval,我已经更新了代码我已经更新了代码。我不知道我以前怎么没有意识到。。。有几件事我在编辑中解释错了