gpt4 book ai didi

javascript - 动态设置多个 setInterval(s) 并存储以供以后访问

转载 作者:行者123 更新时间:2023-11-30 08:22:33 27 4
gpt4 key购买 nike

我有一个使用 setInterval 运行的函数,它从单击按钮的 ID 获取变量。有没有更好的方法可以做到这一点,而不必每次都为新变量编写所有开关 block ?可以为变量动态调用 setInterval 吗?

我不知道如何表达这个问题,但是这样的事情是可能的吗?使用包含项目的数组并为数组内的项目调用 setInterval?

像这样:

allitems.wood

然后调用 allitems[item] = setInterval( function() { gather(allitems[item]); }, time );

这就是我现在的做法,但每次我包含一个新项目时,我都必须重新编写所有案例部分......

switch(item){
case "wood":
getwood = setInterval( function() { gather(item); }, time );
break;
case "planks":
makeplanks = setInterval( function() { gather(item); }, time );
break;
case "stone":
getstone = setInterval( function() { gather(item); }, time );
break;
case "leather":
getleather = setInterval( function() { gather(item); }, time );
break;
case "iron":
getiron = setInterval( function() { gather(item); }, time );
break;
}

最佳答案

您建议的解决方案非常正确。您可以使用括号表示法来访问对象属性,因此您可以使用变量来动态访问它们。

以下代码将收集木头 6 秒,停止后开始收集石头(纯粹是为了示例目的)。

var allItems = {
wood: 0,
planks: 0,
stone: 0
};

var time = 2000;

function getItem(item) {
allItems[item] = setInterval(function() {
gather(item);
}, time);
}

function gather(item) {
console.log("gathering " + item);
}

getItem("wood");

setTimeout(function() {
clearInterval(allItems.wood);
getItem("stone");
}, 6000);

关于javascript - 动态设置多个 setInterval(s) 并存储以供以后访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com