मैं क्या तलाश कर रहा हूँ यह है की सबसे सरल उदाहरण:पुन: उपयोग jQuery.post()/jQuery.Deferred() वस्तु
var messageLoader = $.post("api/user/messages", {api:data})
messageLoader.done(function(data){
//do something
});
यह शानदार ढंग से काम करता है, लेकिन केवल एक बार। अगर मैं डेटा अपडेट करना चाहता हूं, तो मुझे सबकुछ फिर से परिभाषित करना होगा।
मुझे डिफरर्ड ऑब्जेक्ट के लिए कोई कॉल नहीं मिल रहा है जो मुझे इसे पुनरारंभ करने दें। यानी 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
डेटा का उपयोग करेगा।
मैंने इस तरह के कुछ के लिए दस्तावेज़ों में देखा है लेकिन कुछ भी नहीं मिला है। शायद यहां कोई जानता है कि यह मौजूद है या एक ही चीज़ को पूरा करने का एक तरीका है।
बस एक ऐसा फ़ंक्शन बनाएं जो आपके इच्छित कार्यों को करता है, और इसे फिर से कॉल करें? –