在javascript中为loopin添加setInterval函数
我已经编写了一个for循环,用于获取变量对象中的信息,现在我正在尝试在循环中使用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 :
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,我已经更新了代码我已经更新了代码。我不知道我以前怎么没有意识到。。。有几件事我在编辑中解释错了