Вызов setTimeouts с помощью обратных вызовов или обещаний - PullRequest
0 голосов
/ 30 июня 2018

У меня есть 3 setTimeouts, и мне нужно выполнить одно за другим (синхронно), используя обратные вызовы или обещания ниже, мой код и вывод.

Привет, я заказ 1, Привет, я заказ 2, Привет, я заказ 3.

Ниже мой код:

             setTimeout(function() {
                  console.log('Hi I am order 1');
                    test2();
                }, 3000);

                  setTimeout(function() {
                  console.log('Hi I am order 2');
                     test3();
                }, 2000);


                  setTimeout(function() {
                  console.log('Hi I am order 3');
                }, 1000);

Ответы [ 3 ]

0 голосов
/ 30 июня 2018

Вы почти у цели. Вы вызываете такие функции, как test2() из ваших setTimeout обратных вызовов. Просто оберните вас setTimeout с этими функциями.

Например:

function test2(){
    setTimeout(function() {
        console.log('Hi I am order 2');
        test3(); // <-- you'll also need a test3()
    }, 2000);
}

Если вы сделаете это со всеми из них, они позвонят по порядку. Если вы также включите первую setTimeout в функцию ... скажем, test1(), тогда вы можете начать все это, вызвав эту функцию.

0 голосов
/ 02 июля 2018
setTimeout(function(){
    console.log("Hi I am order 1");
    setTimeout(function(){
        console.log("Hi I am order 2");
        setTimeout(function(){
            console.log("Hi I am order 3");
        },1000)}
    ,2000)
},3000)
0 голосов
/ 30 июня 2018

Если я вас правильно понимаю - вы хотите, чтобы каждая функция запускалась после завершения предыдущей. Простой способ - вызвать каждую из последней строки предыдущей. С обещаниями я бы использовал http://bluebirdjs.com/docs/api/promise.each.html

Promise.each последовательно запускает все ваши функции. Обратите внимание, что он ожидает обещание (если вы не ответите обещанием - оно выполнит их все параллельно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...