1

コードに問題があります。特に、keyup イベントの後に 2 つのコールバックを順番に呼び出したいと考えています。

$('myDiv').keyup(function(){ 

 function1
 function2

});

次の関数の開始前に、最初の関数のロード ( function1SQL 要求、行の追加など) を待機することは可能ですか?

たくさんのタンク

4

3 に答える 3

3

2 番目の関数を最初の関数の ajax メソッド コールバックに入れます。次に例を示します。

function first(cb) {
    // request something. Passed in function will execute
    // once the request has completed.
    $("#foo").load('/foo', cb);
}

function second() {
    // do something
}

$('myDiv').keyup(function(){ 
    first(second);
});
于 2011-04-11T12:54:09.910 に答える
1

関数の実行内容に応じて、2 つの解決策があります。

  1. function1非同期呼び出し/コードが含まれていません:
    ステートメントを前後に配置するだけです:

    function1();
    function2();
    
  2. function1非同期呼び出し/コードが含まれています(これがあなたのケースだと思います)次に、コールバックとして
    渡して、応答を処理するときに呼び出す必要があります:function2function1function1

    function1(function2);
    

    function1たとえば、次のようになります。

    function function1(cb) {
        $.ajax({ // asynchronous call
            //...
            success: function(data) {
                // response handled here
                cb(); // call the callback
            }
        });
    }
    
于 2011-04-11T12:54:27.607 に答える
0

Javascript は、完了function2後にのみ評価されるシングル スレッドです。function1ただし、これで AJAX を実行している場合 (AsynchronousJAX) はそうではなく、 の AJAX 呼び出しの応答ハンドラーにfunction1への呼び出しを配置することで、これを回避する必要があります。function2function1

于 2011-04-11T12:55:21.733 に答える