Здравствуйте, вопрос у меня такой, ну изменять позицию экземпляра класса, есть метод Move, который изменяет позицию, хочу вызвать его с определённой задержкой в цикле
while (car1.currentPosition < screen.width - 10){
div.style.left = car1.currentPosition + 'px';
setInterval(car1.move(), 1000);
}
Car1 тестовый экземпляр, setInterval(car1.move(), 1000) - Данная конструкция не работает, вылетает всё разом без задержки. Вот и вопрос как изменить вызов setIntervalдля того чтобы всё работало
Для этого надо просто создать такую функцию, которая создает задержку...
Пример вот от сюда Источник
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
while (car1.currentPosition < screen.width - 10) {
div.style.left = car1.currentPosition + 'px';
await sleep(2000);
car1.move();
}
while (car1.currentPosition < screen.width - 10){
div.style.left = car1.currentPosition + 'px';
setInterval(function(){car1.move()}, 1000);
}
Вам нужно прочитать про стек трейс и понять как работает javascript внутри движка. Метод while синхронный и будет выполняться пока не завершится в то время как setInterval асинхронный - он упадет в web APIs и будет ждать пока event loop его не вызовет (иными словами пока не пройдет весь стек трейс синхронных функций). Попробуйте использовать самовызывающиеся setTimeout (что-то типа этого):
setTimeout(function timeout() {
if (car1.currentPosition < screen.width - 10) {
div.style.left = car1.currentPosition + 'px';
setTimeout(timeout, 1000);
}
}, 1000)
Необходимо убрать скобки. Вот так:
while (car1.currentPosition < screen.width - 10){
div.style.left = car1.currentPosition + 'px';
setInterval(car1.move, 1000);
}
UPDATE:
Тогда в вышем случае лучше так:
while (car1.currentPosition < screen.width - 10){
div.style.left = car1.currentPosition + 'px';
setTimeout(function call() {
car1.move();
setTimeout(call, 1000);
}, 1000);
}
Данный код ждет, пока выполнется перемещение элемента.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь создавать ордеры на bitfinex, через их REST APIВсе команды проходят нормально, только с Multiple New Orders (https://api
Например Google Analytics так делает: https://wwwgoogle-analytics
ЗдравствуйтеПодскажите пожалуйста, как правильно перевести массив из php в js так, что бы внутри массива order создавались новые объекты, но при...