【问题标题】:jquery when custom wrapper functions?jquery何时自定义包装函数?
【发布时间】:2011-08-23 16:50:58
【问题描述】:

我有一个围绕 jquery ajax 的自定义包装函数。

custom.get = function (path, callback) {
  // do other things
  $.get(path, function () {
    callback()
  })
}

在做

$.when(custom.get(path), custom.get(path)).done(function (result1, result2) { callback})

似乎不起作用。它应该工作吗?做延迟的任何替代方案?

【问题讨论】:

    标签: javascript jquery callback jquery-deferred


    【解决方案1】:

    您需要从您的 custom.get() 函数中返回 jXHR 对象(它抽象出一个 jQuery Deferred)才能使这项工作:

    custom.get = function (path, callback) {
      // do other things
      return $.get(path, function () {
         if( typeof callback === 'function') callback();
      })
    } 
    

    你还应该检查你传入的第二个参数是否真的是一个避免不必要错误的函数,见上文。

    【讨论】:

      【解决方案2】:

      不要忘记返回 ajax 调用,并且您应该检查以确保在调用之前定义了回调。

      custom.get = function (path, callback) {
        // do other things
        return $.get(path, function () {
          if(callback)
             callback()
        })
      }
      

      【讨论】:

      • 如果任何真值(除了函数)作为第二个参数传入,这将崩溃。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      相关资源
      最近更新 更多