我应该 return deferred.resolve/reject 的结果吗?

Should I return the result of deferred.resolve/reject?

使用 Q deferreds 时,我应该 return deferred.resolvedeferred.reject 的结果吗?

function foo() {
  var deferred = Q.defer();
  service.doSomethingAsync({
    success: function() {
      deferred.resolve(); // should I return the result of resolve here?
    }, 
    fail: function(err) {
      deferred.reject(err); // should I return the result of reject here?
    }
  });

  return deferred.promise;
}

您的代码可以更改为:

function foo() {
  var deferred = Q.defer();

  service.doSomethingAsync({
    success: deferred.resolve, 
    fail:  deferred.reject
  });

  return deferred.promise;
}

你想从 foo() 方法 return 做什么当然取决于你想实现什么。在许多情况下,您隐藏了内部结构,只是 return 一个空数组,如果出现问题则为 null。但是......如果需要......你可以抛出一个错误。如果你想处理函数之外的事情,是的,return 例如错误对象......就像我说的......这取决于。