在settimeout之后需要继续javascript函数

时间:2013-08-27 07:34:56

标签: javascript

我有一个JavaScript函数;从那以后我称之为延迟功能。

function(){
  // code

  doDelay();

  // some other functionality....
}

function doDelay(){
   setTimeout(function() {alert("after wait");}, 10000);
}

等待10秒后警报即将到来after wait。但它不再继续我的主要功能的some other functionality.... ..延迟后我想执行剩余的功能。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

setTimeout函数不会延迟执行。相反,它会安排一个稍后执行的功能。要做你想做的事,你需要将代码更改为:

function(){
...
...
    doDelay(function(){

      some other functionality....

    });
}

function doDelay(callback){
    setTimeout(function() {callback()}, 10000);
}

确实,javascript已经有了doDelay功能。它被称为setTimeout

function(){
...
...

    setTimeout(function(){

      some other functionality....

    },10000);
}

如果你希望外部函数也延迟执行后面的代码,你还需要传递回调函数:

function foo (callback){
...
...
    doDelay(function(){

      some other functionality....

      callback();

    });
}

因此,例如,它允许您重写这样的内容:

foo();
// do other stuff after foo...

到此:

foo(function(){
    // do other stuff after foo...
});

您基本上需要围绕回调重构逻辑。

答案 1 :(得分:0)

你不能将其他功能包装在另一个函数中,然后从你的SetTimeout调用该函数吗?

 function(){
  doDelay();
}

function doDelay(){
  setTimeout(function() {alert("after wait");andTheRest();}, 10000);
}

function andTheRest(){
  //Rest of the stuff here
}

答案 2 :(得分:0)

doDelayAndThenContinue(){
          setTimeout(function() {alert("after wait"); 
              //do other functionality here
          }, 10000);

     }

从main方法中删除do do功能并输入setTimeout