MooTools - 重用请求对象

时间:2010-06-29 12:12:55

标签: mootools

我想重用一个Request.JSON对象,但我不确定如何。我正在寻找类似以下示例的内容:

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

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

2 个答案:

答案 0 :(得分:3)

这种方法会遇到一些问题。

如果您只有一个实例处理所有请求,那么您需要确保在发生请求时,没有其他任何可以使用新选项作为其异步重新启动它。此外,事件将叠加。您运行的每个新实例都将addEvent 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/

答案 1 :(得分:0)

我对接受的答案没有区别,但它实际上回避了恕我直言的问题。

看看下面的博文(不是我的);在那里,在副标题带有Request.HTML的多个链接下,您可以找到有关如何重用Request实例的一些指导。