0

javascriptで、最初の関数が「準備完了」のときに他の関数を呼び出す方法はありますか?

このようなもの:

ridiculousTimeConsumingFunction().onReady( newFunction() );

私の例を説明するために、あなたは彼女を見ることができます: http ://web.cinaird.se/pdf/test.htm

4

4 に答える 4

5

ridiculousTimeConsumingFunction(); newFunction();

newFunction()終了後に実行されridiculousTimeConsumingFunction()ます。

ridiculousTimeConsumingFunction(newFunction);また、のようなことをして、ridiculousTimeConsumingFunctionを次のように定義することもできます。

function ridiculousTimeConsumingFunction(callback) {
   for (var i=0;i<1000000000;i++) {

   };

   callback();
}

これは同じ効果があります。

実際、これは非同期イベントであり、時間のかかる関数ではないため、すべてを破棄します...コールバックを使用する必要があります。

function longFunction (callback) {
  setTimeout(function(){
    $(".theDiv").css('height', 200 );
    callback();
  }, 1000);
}

次に、次のように呼び出します。

longFunction(function () {
      $("#info").html(info);
});
于 2010-05-01T12:35:55.410 に答える
1

「準備完了」の概念は、通常、例のような非同期関数では定義されていません。通常、この種のことはコールバックを介して行われます。

function asyncFunc(callback) {
  setTimeout(function() {
    doSomething();
    callback();
  }, 1000);
}

asyncFunc(function() {alert('Done!');}
于 2010-05-01T12:36:56.380 に答える
0

DOMの準備ができたときに準備ができているという意味の場合、そのようなイベントはありませんが、DOMの準備ができたときにjQueryの readyハンドラーを使用して関数を起動できます。

loadJavascriptを使用すると、次のようなイベントで関数を起動できます。

window.onload = function(){
  // your function code here
};

または

window.onload = somefunction;
于 2010-05-01T12:34:02.257 に答える
0

サンプルでは、​​「ridiculousTimeConsumingFunction」関数の実行にそれほど時間がかかることはありません。別の関数が1秒後に実行されるようにスケジュールされているだけです。

このようなことをしたい場合は、jQueryUIのエフェクトAPIを確認することをお勧めします。それはあなたが次々にアニメーションを「連鎖」させることを可能にし、あなたが求めている効果を達成するはずです。

于 2010-05-01T12:37:35.473 に答える