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

     }

do other 機能を main メソッドから削除し、setTimeout に入れます

于 2013-08-27T07:39:20.230 に答える