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

自作多情 提交于 2019-12-07 16:21:47

问题


I realize this is a very similar question to this one. But I'm still unclear on how to do it in my situation. Just need some help with a successful callback.

This is what works:

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

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

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

This is what I want to accomplish:

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;
}

回答1:


You can use this:

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

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



回答2:


Depending on your preference/requirements you could do a few things. I normally write promise callbacks like this, so you could do:

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

or, depending on how you feel about this way (i know some people don't like it, i try to avoid unless absoluley nessesary)

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

Do either of these work for you?




回答3:


See if it can help you:

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;
}


来源:https://stackoverflow.com/questions/32465183/passing-parameters-to-promises-success-callback-in-angularjs-q

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!