Вопрос

Пауза в JS

В методе схемы JS требуется сделать паузу.
Какие у вас используются методы?
Я пока нашёл вот такой подход.

wait: function (ms) {
    var start = new Date().getTime();
    var end = start;
    while (end < start + ms) {
        end = new Date().getTime();
    }
},

Вызов метода: this.wait(1000);

Нравится

3 комментария

Дамиан, ну так точно не стоит, это ведь будет крутиться цикл всё время до нужного момента и занимать всё ядро процессора.

В JS есть готовые функции таймера, куда параметром передают обработчик. См. статью.

Пример использования:

window.setTimeout(function, 1000);
function myFunction() {
  alert('Hello');
}

Аналогично и с регулярным запуском, вместо setTimeout написать setInterval.

А тут пример его использования в Creatio.

Спасибо за пример. Но пока не разобрался как быть с методом с параметрами.

// Вызовы.
setTimeout(this.foo1, 1000);
setTimeout(this.foo2("some"), 1000);
// Методы.
foo1() {
  console.info("foo1");  // есть ожидание
},
foo2(args) {
  console.info("foo2 with args");  // нет ожидания
},

 

Разобрался. Вот так будет вызов с аргументами и ожиданием.

let dt = new Date();
console.info("start: " + dt.getMinutes() + "." + dt.getSeconds() + "." + dt.getMilliseconds() + ".");
setTimeout(this.foo1, 1000);
setTimeout(this.foo.bind(this, "some"), 1000);
foo1() {
  console.info("foo1");
  let dt = new Date();
  console.info("foo1: " + dt.getMinutes() + "." + dt.getSeconds() + "." + dt.getMilliseconds() + ".");
},
foo2(args) {
  console.info("foo2(" + args + ")");
  let dt = new Date();
  console.info("foo2: " + dt.getMinutes() + "." + dt.getSeconds() + "." + dt.getMilliseconds() + ".");
},

 

Показать все комментарии