【发布时间】:2018-05-03 08:17:40
【问题描述】:
我正在尝试将 setTimeout 包装在一个立即调用的函数表达式中,该表达式创建该函数,然后像上面一样再次调用自身,并自动启动循环:
这是参考:enter link description here
由于某种原因,它运行一次然后停止。
//Spaceship move
function spaceShipMove(spaceShipToMove){
var randomY = Math.floor(Math.random());
spaceShipToMove.style.webkitTransform = 'translate(-3000px, ' + randomY + 'px)';
}
//Spaceship
var spaceShipsList = createMultipleSpaceShips(500);
for (var i = 0; i < spaceShipsList.length; i++){
var aSpaceShip = spaceShipsList[i];
app.dom.mainWrapper.appendChild(aSpaceShip);
(function t() {
setTimeout(function (spaceShipGo) {
spaceShipMove(spaceShipGo);
}, i * 300, aSpaceShip)
})();
【问题讨论】:
-
Minimal example 请...
-
谢谢。我已经修改了。
-
您真的需要将 setTimeout 包装在 IIFE 中吗?我的意思是,setTimeout 将在没有它的情况下运行
-
我想要这个无限的时间
-
您错过了在链接答案中使用 IIFE 的意义。您将函数命名为
t,但从不使用此名称。另外,您真的需要单独的超时/间隔吗?您几乎可以肯定一次只安排一个超时,并将循环放入其中。这样你就可以避免在那里通过太空船的整个问题,这是不容易解决的。
标签: javascript settimeout