在 angularjs $q 中将参数传递给 promise 的成功回调

Passing parameters to promise's success callback in angularjs $q

我意识到这个问题与 one 非常相似。但是我仍然不清楚在我的情况下该怎么做。只需要一些成功回调的帮助。

这是有效的方法:

function getStuff(accountNumber) {
    var logMessage = 'POST GetStuff';

    return $http.post(GetStuff, { custId: accountNumber })
        .then(log);
}

function log(response) {
    logger.debug(response);
    return response;
}

这就是我想要完成的:

function getStuff(accountNumber) {
    var logMessage = 'POST GetStuff';

    return $http.post(GetStuff, { custId: accountNumber })
        .then(log(response, logMessage);
}

function log(response, logMessage) {
    logger.debug(logMessage, response);
    return response;
}

你可以使用这个:

function getStuff(accountNumber) {
    var logMessage = 'POST GetStuff';

    return $http.post(GetStuff, { custId: accountNumber })
        .then(
           function success(response) {
               return log(response, logMessage);
           }
        );
}

根据您的 preference/requirements,您可以做一些事情。我通常这样写 promise 回调,所以你可以这样做:

.then(function success(response){
  return log(response, logMessage);
});

或者,取决于你对这种方式的感受(我知道有些人不喜欢它,我尽量避免,除非绝对必要)

.then(log.bind(null, response, logMessage));

这些对你有用吗?

看看能不能帮到你:

function getStuff(accountNumber) {
  var logMessage = 'POST GetStuff';
  var deferred = $q.defer();

  return $http.post(GetStuff, { custId: accountNumber })
   .success(function(response){
      deferred.resolve(response);
      log(response, logMessage);
   }).error(function(){
      deferred.reject();
   })     
   return deferred.promise;
}