首页 > 解决方案 > 通过回调或承诺调用 setTimeouts

问题描述

我有 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);

标签: node.jsexpress

解决方案


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

Promise.each串行运行您的所有功能。请注意,它需要一个 Promise(如果您没有以 Promise 响应 - 它会并行运行所有这些)。


推荐阅读