代码之家  ›  专栏  ›  技术社区  ›  Steve

MooTools-重用请求对象

  •  1
  • Steve  · 技术社区  · 14 年前

    // In initialize/constructor
    this.request = new Request.JSON( {
        method : 'get'        
    });
    
    // Elsewhere
    this.request.setOptions({
        url : 'http://...',
        onSuccess : onSuccess,
        onFailure : onFailure
    }).send();
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   Dimitar Christoff    14 年前

    这种方法会有一些问题。

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

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

    我并不是把它作为一个如何写的例子来展示,而是想看看它所带来的问题。首先单击第二个链接,然后单击第一个链接(jsfiddle增加2秒网络延迟),您将看到第二个链接的onComplete事件的警报也堆积在第一个链接上。此外,每次单击链接2,您都会看到旧警报之外的新警报。

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

    祝你好运:)

    http://www.jsfiddle.net/dimitar/8a7LG/5/

        2
  •  0
  •   CSSian    11 年前

    我不同意公认答案的观点,但它实际上回避了问题。

    看看下面的博文(不是我的);在那里,在副标题下面 带有Request.HTML的多个链接