javascript - 在内部调用(js)的函数中使用setInterval?
问题描述
我这里有这样的代码。我想以几秒钟的时间间隔显示结果。但它不起作用。
const moveCranes = setInterval(function(plate, slot_a, slot_b, slot_c) {
if (plate > 0) {
moveCranes(plate - 1, slot_a, slot_c, slot_b);
port_a.innerHTML = "Move plate " + plate + " from " + slot_a + " to " + slot_c + "<br />";
moveCranes(plate - 1,slot_b, slot_a, slot_c);
}
}, 2000);
moveCranes(input.value,"slot_a","slot_b","slot_c");
你能解释一下我做错了什么以及为什么 setInterval 不起作用?
解决方案
你似乎在寻找
function moveCranes(plate, slot_a, slot_b, slot_c) { /*
^^^^^^^^ */
setInterval(function() {
// ^^^^^^^^^^ this inner function takes no parameters
if (plate > 0) {
moveCranes(plate - 1, slot_a, slot_c, slot_b);
port_a.innerHTML = "Move plate " + plate + " from " + slot_a + " to " + slot_c + "<br />";
moveCranes(plate - 1, slot_b, slot_a, slot_c);
}
}, 2000);
}
而且由于您再次递归调用该函数,您可能想使用setTimeout
而不是setInterval
.
推荐阅读
- python - 需要帮助尝试切换帧
- memory - FMC 比 STM32H7 上的 QSPI 慢?
- python - 显示 LIME 解释结果时是否可以使用 output_file 而不是 show_in_notebook?
- google-apps-script - 打开表单时,onOpen 功能未激活
- javascript - React 中的错误边界:为什么 'throw new Error('some message')' 失败而 'throw errorObj' 工作?
- json - 在 jq 中添加具有相同字段名称的数组中的元素
- javascript - 如何为集合中的所有项目分配一个功能?
- git - 为主应用创建文档侧 webapp
- colors - 使用一种颜色绘制存储在缓冲区中的三角形opengl es 2.0
- amazon-web-services - 使用条件表达式更新 dynamoDB 列