2013-01-05 17 views
5

私はコールバックでajaxコールを持っています。私は、コールバックが終了した後に別のメソッドJUSTをコールしたいと思います。私はjQueryからpromise APIを使用しましたが、以下のように、最初のメソッドが完了する前に2番目のメソッドが呼び出されます。getJSONとコールバックでjQuery約束

アイデア?

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 

答えて

9

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

$.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/

は、あなたが(あなたが .success()でやったように)呼び出したいコードをラップ無名関数を作ります
関連する問題