我有一个对象,我把它放在一个数组中,我用对数组进行迭代,对于数组中的每个对象,我用一个参数设置了一个调用对象方法的间隔,但是我不能。这是我的“班级”。
function ClassTest() {
this.test = function(word) {
console.log(word);
}
}
我创建对象并将其放置在数组中:
var array = [];
var objectTest = new ClassTest();
array.push(objectTest);
当我设定时间间隔时:
for(var i = 0; i < array.length; i++) {
array[i].loop = setInterval(function() {
array[i].test("hello")
}, 1000);
}
问题是setInterval函数中的var
i
不存在,我可以创建一个varindex
和它的存在,但我不理解为什么index
存在而vari
不存在:
for(var i = 0; i < array.length; i++) {
var index = i;
array[i].loop = setInterval(function() {
array[index].test("hello")
}, 1000);
}
当我不使用
索引
var:
Uncaught TypeError: Cannot read property 'test' of undefined
无论是否使用索引
,您的尝试在这两种情况下都是不正确的。代码中只有一个i
变量,当超时触发时,它将具有值数组。长度
。
这是一个被称为“闭合循环变量”的问题,一种简单的解决方法是:
array.forEach(function (item) {
item.loop = setInterval(function () {
item.test("hello");
}, 1000);
});
这个问题有几个答案可以深入解释您看到的行为的原因,但大多数投票率较高的答案在处理数组时过于复杂forEach
是一条路要走。
因为您的for
循环会立即执行。当你的setInterval()
第一次执行时,你的for
循环将早已完成,你的i
将在数组的范围之外。
在这个例子中,我们的数组
的长度
为3。当我们的for
循环结束时,我们的i
变量将等于3
。如果我们在setTimeout中登录i
,则数字3
将在我们的JavaScript控制台中显示三次:
var array = [1, 2, 3];
for (var i = 0; i < array.length; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
我在for循环中有一个set interval函数,当它在set interval函数中时,如果它满足条件,就会发出警报并清除间隔。下面是我的代码,但它不工作。谁能告诉我这里的错误是什么。 谢谢 我试图解决的是:当本地时间与定时器数组中的时间匹配时,我需要每次获得警报(第0列;定时器[计数][0])。数组已经排序
我手头有一个简单的任务:使用折线图或XY图或任何使用bean类型的数据源绘制整数-整数值对。有问题的bean返回X轴和Y轴的长值。人们期望的默认行为是在两个轴上显示1、2、3、4等刻度。 但是不,对于在两台不同计算机上运行的同一应用程序,我得到的值类似于2.5或1E1!好的,这篇旧帖子建议将设置为。现在确实显示了整数,但具有重复值,例如0,0,1,2,2,3,3,3,3,3,4,4等。同一篇文章建
我正在尝试开发一个滑块,如果用户没有点击后退或前进按钮,它每5秒就会改变一次。 但是如果他(用户)这样做了,间隔会触发多次。。。为什么? 我将间隔保存在一个变量中,并清除该变量,因此我不知道为什么这不起作用。。。但是看看你自己: }); 感谢阅读;-)
问题内容: 我正在学习node.js,只是设置了一个空的Linux虚拟机并安装了节点。 我每分钟都在不断运行功能 并考虑根据当前时间添加其他功能。-(例如,如果dateTime =中午星期日,则运行功能) 我的问题是,与传统的cron作业设置相比,运行这样的设置是否有任何缺点? 请记住,无论如何,我必须每分钟在节点中运行一次此功能。 问题答案: 这取决于您必须严格遵守该分钟间隔,以及节点脚本在此期
我只想在进行ajax调用时清除上一个间隔并设置一个新的间隔。 当前代码为: 我尝试了许多推荐的变化,以便能够从函数外部清除间隔。如; 将"间隔"变量设置为null或false, 窗设定间隔, 在setInterval中写入计数函数, 将count函数作为ajax函数之外的单独函数编写, 但这两种变化都没有消除间隔。 稍后,我还需要清除键入的间隔。
有人知道android BLE扫描的间隔和窗口与低延迟、平衡和低功耗扫描模式设置相关联吗? 我发现了这个(如何设置BLE扫描间隔和windows nojust chelse mode在Android中?)所以问题是,如果我在android设备开始扫描后5000ms启动蓝牙设备广告,它会在3000ms内被发现。(这表示5000ms间隔、5000ms窗口不正确?)