1

我有一个 JavaScript 函数;从那我调用延迟函数。

function(){
  // code

  doDelay();

  // some other functionality....
}

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

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

4

3 回答 3

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...
});

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

于 2013-08-27T07:38:55.913 回答
0

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

 function(){
  doDelay();
}

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

function andTheRest(){
  //Rest of the stuff here
}
于 2013-08-27T07:38:10.973 回答
0
doDelayAndThenContinue(){
          setTimeout(function() {alert("after wait"); 
              //do other functionality here
          }, 10000);

     }

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

于 2013-08-27T07:39:20.230 回答