javascript – 自定义JQuery延迟处理程序

不确定这是否可行,但我会试一试.我有一个延迟函数,它调用服务器来创建或更新和对象.例如:

var createOrUpdate = function(item) {
    var self = this;
    var deferred;

    if (item.id && item.id > 0) {
        updated = true;
        deferred = update.call(self, params);
    } else {
        deferred = create.call(self);
    }

    return deferred;
};

其中create和call方法返回deferred自己.这将允许我打电话

foo.createOrUpdate(bar).then(function(response) {
    // something happened
});

但是,我希望能够添加一些自定义的延迟处理程序,以便我可以这样做

foo.createOrUpdate(bar).created(function(response) {
    // an item was created
}).updated(function(response) {
    //an item was updated
});

首先,这是可能的吗?其次,如果是这样,我该怎么做呢.

基本上我想创建一个自定义的延迟处理程序.

非常感谢.

最佳答案 没有真正测试:

var createOrUpdate = function(item) {
  return {
    isUpdated : item.id && item.id > 0,
    created   : function(cb) {
      if (! this.isUpdated)
        create.call(self).then(cb);
      return this;
    },  
    updated   : function(cb) {
      if (this.isUpdated)
        update.call(self, params).then(cb);
      return this;
    }   
  };  
};  

foo.createOrUpdate(bar)
  .created(function(response) {
    // an item was created
  })
  .updated(function(response) {
    //an item was updated
  });
点赞