通过回调或Promise调用setTimeouts

时间:2018-06-30 08:25:25

标签: node.js express

我有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 :(得分:0)

如果我正确理解您-您希望每个功能在上一个功能结束时运行。 一种简单的方法是从上一个的最后一行调用每个。 凭诺言,我会使用http://bluebirdjs.com/docs/api/promise.each.html

UIBarButtonItem串行运行所有功能。 请注意,它期望一个承诺(如果您不对一个承诺做出回应-它将并行运行所有它们)。

答案 1 :(得分:0)

您快到了。您正在从test2()回调中调用setTimeout之类的函数。只需将setTimeout包裹在这些函数中即可。

例如:

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

如果您对所有人都这样做,他们将按顺序致电。如果您也将第一个setTimeout包装在一个函数中……说test1(),那么您可以通过调用该函数来开始整个工作。

答案 2 :(得分:0)

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)