我需要逐个将对象从数组pts
传递到数组test
,之后我需要使用数组测试调用函数mimicSvg
我尝试了一切:
var test=[{"X":"300","Y":"400"}];
setTimeout(function () {
for(var m=1;m<25;m++){
var q = pts[m].X;
var e = pts[m].Y;
console.log(test);
test.push({"X":q,"Y":e});
mimicSvg(test,1);
}
}, 1000);
和此:
var test=[{"X":"300","Y":"400"}];
for(var m=1;m<pts.length;m++){
var q = pts[m].X;
var e = pts[m].Y;
console.log(test);
test.push({"X":q,"Y":e});
alert(m);
setInterval(mimicSvg, 2000, test, 1);
}
还有这个:
setTimeout( "mimicSvg(test,1);test.push({"X":q,"Y":e});",m*3000 );
和此类似:
setTimeout(function() {mimicSvg(test,1); test.push({"X":q,"Y":e});},m*3000 );
但每次转移后我都无法运行功能...... 我的控制台看起来像这样:
和:
我很困惑......我错了吗?为什么我不能这样测试:
after 1. loop array[1] -> run function with this array
after 2nd loop array[2] -> run function ...
etc....
答案 0 :(得分:2)
<强> EDITED 强>
试试这个:
var set_time;
var m = 0;
var add_array = function(){
if(m < pts.length){
var q = pts[m].X;
var e = pts[m].Y;
console.log(test);
test.push({"X":q,"Y":e});
mimicSvg(test,1);
m++;
set_time = setTimeout(add_array,1000);//it call itself again and again until m is more than the length of the array'
}
}
set_time = setTimeout(add_array,1000);
我认为您的问题是for
立即运行所有数组的函数。我想你想每1秒运行一次这个功能,以便解决问题
它被称为&#34; Rucursion&#34;此函数将调用自身,直到m大于数组的长度(if(m < pts.length)
)
如果它不是您想要的,请向我解释更多细节
希望它有所帮助:)
答案 1 :(得分:1)
我认为您通过添加setTimeout
或setInterval
方法使事情变得复杂。你能不能简单地在循环中运行mimicSvg
调用?假设是对的,这是我的解决方案:
/** assuming pts and mimicSvg is available in this scope */
var testData = [{x: 300, y:400}];
for(var m=1;m<pts.length;m++){
var pt = pts[m];
var itemForTest = {X: pt.X, Y: pt.Y}
console.log("Test Data at iteration " + m, testData);
testData.push(itemForTest);
mimicSvg(testData, m);
}
如果setTimeout
或setInterval
来电有充分理由,请解释为什么需要这些电话。