立即调用setTimeout的函数表达式不起作用

时间:2018-05-03 08:17:41

标签: javascript settimeout

我正在尝试将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)
        })();

1 个答案:

答案 0 :(得分:0)

试试这个

for (var i = 0; i < spaceShipsList.length; i++){
 var aSpaceShip = spaceShipsList[i];
 app.dom.mainWrapper.appendChild(aSpaceShip);

 setTimeout(spaceShipMove.bind(null, aSpaceShip), i * 300)
}