在jQuery中返回promise()或延迟有什么区别?

Mau*_*res 0 javascript ajax jquery promise

假设我有一个没有承诺返回的ajax方法,所以我会做这样的事情:

promises.setPreferredService = function(id) {
  var deferred = $.Deferred();

  nsAddressAjaxService.setPreferredAddress(id, {
    callback: function(data) {
      deferred.resolve(data);
    }
  });

  return deferred.promise(); // I could also return only `deferred`
};
Run Code Online (Sandbox Code Playgroud)

在我的方法的回归中,我可以返回deferred.promise()或只返回deferred它们两个我可以这样做:

promises.setPreferrredService.done(callback);
Run Code Online (Sandbox Code Playgroud)

那么返回deferred.promise()或返回的区别是什么deferred

T.J*_*der 5

那么返回deferred.promise()或返回的区别是什么deferred

要返回deferred.promise(),以便调用代码不能打电话resolvereject或其他延期的具体方法.这不是调用者应该访问的内容.它应该只能消耗承诺,而不会影响它的状态.