8

コールバックを伴うajax呼び出しがあります。コールバックが終了した直後に別のメソッドを呼び出したい..jQueryのpromiseAPIを使用しましたが、以下に示すように、最初のメソッドが完了する前に2番目のメソッドが呼び出されます。

何か案は?

  my.data = function () {
     var loadFlights = function (callback) {
        //$.getJSON("/api/Acceptance/", function (data) {
        //    callback(data);
        //}); 
        $.getJSON("/api/Acceptance").success(function (data) {
           console.log("first: " + new Date().getTime());
           callback(data); 
        })
        .then(console.log("second:" + new Date().getTime()));
     };

     return { load: loadFlights }
  }();

コンソールへの結果:

second:1357393615115 
first: 1357393615246 
4

2 に答える 2

19

にコールバック関数を提供する代わりに.then()、の出力を渡しています(これがすぐに印刷されるconsole.log("second:" + new Date().getTime())理由です)。second

呼び出したいコードをラップする無名関数を作成します ( で行ったように.success())。

$.getJSON("/echo/json").success(function(data) {
  console.log("first: " + new Date().getTime());
}).then(function() {
  console.log("second:" + new Date().getTime())
});

デモ: http://jsfiddle.net/Blender/fJb7h/

于 2013-01-05T13:55:18.317 に答える