私が探しているものの最も簡単な例はこれです:
var messageLoader = $.post("api/user/messages", {api:data})
messageLoader.done(function(data){
//do something
});
これは見事に機能しますが、一度だけです。データを更新したい場合は、すべてを再定義する必要があります。
Deferred Object を再起動させるための呼び出しが見つからないようです。つまりmessageLoader.redo()
、理想的には POST リクエストをやり直し、その後、再定義することなく同じ「完了」ハンドラを呼び出します。
すべてを関数に入れて、その関数をもう一度呼び出すこともできますが、それは私が探しているものではありません。
var messageLoader = $.post("api/user/messages", {api:data})
var friendRequestLoader = $.post("api/user/friendrequests", {api:data})
$.when(messagesLoader, friendRequestLoader)
.done(function (messages, friendRequests) {
// update display of messages and friend requests
// attach Handlers
});
$("#updateMessages").click(function(){
messageLoader.redo() // This doesn't exist
})
クリック$("#updateMessages")
するとその要求だけがやり直され、$.when()
ハンドラーは新しいmessageLoader
データと元のfriendRequestLoader
データを使用するという考え方です。
ドキュメントでこのようなものを探しましたが、何も見つかりませんでした。おそらく、ここにいる誰かがそれが存在するかどうか、または同じことを達成する方法を知っているでしょう。