2010-06-29 45 views
1

我想重新使用一個Request.JSON對象,但我不知道如何。我正在尋找類似下面的例子:MooTools - 重用請求對象

// In initialize/constructor 
this.request = new Request.JSON({ 
    method : 'get'   
}); 

// Elsewhere 
this.request.setOptions({ 
    url : 'http://...', 
    onSuccess : onSuccess, 
    onFailure : onFailure 
}).send(); 

回答

3

這種方法會出現某些問題。

如果您只有一個實例處理所有請求,那麼您需要確保發生請求的同時,沒有其他任何事情可以使用新選項作爲其異步進行重新啓動。另外,事件將會疊加起來。您運行的每個新實例都將添加事件onComplete/onSuccess/onFailure,並且它們不總是相關的。所以您需要在每次運行之前將removeEvents()應用於請求實例。

看看這裏http://www.jsfiddle.net/dimitar/8a7LG/4/

我不顯示這是如何我會寫一個例子,但看到隨之而來的問題。先點擊第二個鏈接,然後點擊第一個鏈接(jsfiddle會增加2秒的網絡滯後時間),並且您會看到第二個鏈接的onComplete事件中的警報疊加在第一個鏈接上。此外,對於鏈接2上的每次點擊,您都會看到除舊版本之外的新警報。

您還必須考慮它是如何適用於擴展Request.JSON,但它完全取決於您的需求。

p.s.如果你去到Request.JSONP這種結構可以玩一些花樣,特別是與回調函數被重置等

好運:)

編輯這裏與REMOVEEVENTS這樣工作的事你沒有得到堆疊:http://www.jsfiddle.net/dimitar/8a7LG/5/