0

機能を優先したいのですが。

$(document).ready(function(){
drawMap();
on showLinks() ready do drawChart();
});

jQueryでこれを行うにはどうすればよいですか?

ありがとう、Répás

4

4 に答える 4

1

drawMap()内でshowLinks()を呼び出しますshowLinks()内および最後でdrawChart()を呼び出します

于 2011-05-18T12:46:01.533 に答える
1

ゲイリーが彼の答えですでに述べたように、非同期実行を扱っている場合にのみこれを行いたいと思うでしょう。

jQuery1.5で導入された遅延を確認することをお勧めします。

あなたの場合、それは次のようになります:

$(function(){
    drawMap();
    $.when(showLinks())
        .then(drawChart);
});

上記を機能させるには、関数がpromiseshowLinksを返し、実行が完了するとトリガーされることを確認する必要があります。resolve

function showLinks(){
    var dfd = $.Deferred();

    // Add your asynchronous code here
    setTimeout(function(){
        console.log("Links shown!");
        dfd.resolve(); 
    }, 1000);

    return dfd.promise();
}

jsFiddleでテストケースを確認してください

于 2011-05-18T12:48:48.817 に答える
1
  • 非同期でない場合showLinks() & drawMaps()は、次の直後に呼び出しますdrawChart()

    $(document).ready(function(){
       drawMap();
       showLinks();
       drawChart();
    });
    
  • それ以外の場合は、コールバックを提供しますshowLinks()

    function showLinks(callback)
    {
        /* your code */
        callback();
    }
    
    $(document).ready(function(){
       drawMap();
       showLinks(drawChart);
    });
    

コード内で同期と非同期が何であるか、何が非同期であるかを判断するのは困難ですが、いずれの場合も、上記の例のように、コールバックを提供することが前進の道です。

于 2011-05-18T12:49:10.533 に答える
0

showLinks()関数からカスタムイベントをスローできますか?次に、このイベントをキャッチし、それに応じて反応することができます

bindとの間の素晴らしいプレーtriggerです。これがドキュメントです

于 2011-05-18T12:47:57.073 に答える