Сразу же вызванное выражение функции для setTimeout не работает - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь обернуть setTimeout в немедленно вызванное выражение функции, которое создает функцию, которая затем снова вызывает себя, как описано выше, и автоматически запускает цикл:

Вот ссылка: введите описание ссылки здесь

По какой-то причине он запускается один раз, а затем останавливается.

//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 голосов
/ 03 мая 2018

попробуйте

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

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