【问题标题】:jquery vs google closure ajaxjquery vs google 闭包 ajax
【发布时间】:2013-01-10 21:48:09
【问题描述】:

我一直在研究 ajax 调用的 google 闭包库,并且我浏览了一个看起来像这样的示例:

goog.events.listen(request, "complete", function(){
  if (request.isSuccess()) {
    // do something cool
   } else {
     // display an apologize message
   }
});

与看起来像这样的 jquery 示例相反:

$.ajax({url: url, success: function () { }, error: function () { }});

我经常看到 google 关闭弹出窗口,但在这种情况下会有什么优势或劣势?对于像这样的 ajax 相关调用,jquery 库调用似乎要简单得多。

【问题讨论】:

  • $.ajax({url: url, success: function () { }, error: function () { }}); - 您缺少 jQuery 版本的 ajax 回调函数。
  • 这只是一些伪代码来说明这个想法,但我已经编辑了。

标签: javascript jquery ajax google-closure-library


【解决方案1】:

您的 Closure 示例不完整。我假设在您的示例之前,您创建了一个 XhrIo 实例并在其上调用了 send()

如果您想要一个与您发布的 jQuery 示例等效的更简单的 Closure,您可以使用静态 XhrIo.send()。它看起来像这样:

goog.net.XhrIo.send(
  url,
  function(event) {
    var xhr = event.target;
    if (xhr.isSuccess()) {
      // do something cool
    } else {
      // display an apologize message
    }
  });

这无疑比 jQuery 版本更笨重。一般来说,Closure 在设计时考虑到了面向对象的编程(与主要是静态函数的 jQuery 形成鲜明对比)。这可能适合您,也可能不适合您,这取决于您是否喜欢以面向对象的方式编写 JS 代码。

在这种特殊情况下,如果您创建一个 XhrIo 对象并重复用于多个请求(例如,您可以在其上使用 setTimeoutInterval() 以用于所有请求),您可能会从 Closure 中获得一点优势。如果您关心内存,Closure 还可以让您更明确地控制垃圾回收。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多