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