【问题标题】:MooTools - Re-use Request ObjectMooTools - 重用请求对象
【发布时间】:2010-06-29 12:12:54
【问题描述】:

我想重用一个 Request.JSON 对象,但我不知道怎么做。我正在寻找类似以下示例的内容:

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

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

【问题讨论】:

    标签: mootools


    【解决方案1】:

    这种方法会有一些问题。

    如果您只有一个实例处理所有请求,那么您需要确保在请求发生时,没有其他东西可以使用新选项重新启动它,因为它是异步的。此外,事件会堆积起来。您运行的每个新实例都将 addEvent onComplete/onSuccess/onFailure 并且它们并不总是相关的。因此您需要在每次运行之前将 removeEvents() 应用于请求实例。

    看看这里http://www.jsfiddle.net/dimitar/8a7LG/4/

    我不是将其作为我如何编写它的示例,而是要查看它带来的问题。首先单击第二个链接,然后单击第一个链接(jsfiddle 增加了 2 秒的网络延迟),您将看到来自第二个链接的 onComplete 事件的警报也叠加在第一个链接上。此外,每次点击链接 2,除了旧警报之外,您还会看到一个新警报。

    您还必须考虑扩展 Request.JSON 的适用性,但这完全取决于您的需求。

    附言如果您转到 Request.JSONP,这种结构可能会发挥一些作用,特别是在回调函数被重置等情况下。

    祝你好运:)

    编辑这里是使用 removeEvents 的东西,这样你就不会堆积起来:http://www.jsfiddle.net/dimitar/8a7LG/5/

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多