Javascript 将参数传递给promise';s在angularjs$q中的成功回调
我意识到这是一个与此非常相似的问题。但在我的情况下,我还不清楚该怎么做。只是需要一些成功回调的帮助 这就是工作原理:Javascript 将参数传递给promise';s在angularjs$q中的成功回调,javascript,angularjs,q,Javascript,Angularjs,Q,我意识到这是一个与此非常相似的问题。但在我的情况下,我还不清楚该怎么做。只是需要一些成功回调的帮助 这就是工作原理: function getStuff(accountNumber) { var logMessage = 'POST GetStuff'; return $http.post(GetStuff, { custId: accountNumber }) .then(log); } function log(response) { logger
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);
}
);
}
根据您的喜好/要求,您可以做一些事情。我通常会这样写承诺回访,所以您可以:
.then(function success(response){
return log(response, logMessage);
});
或者,取决于你对这种方式的感受(我知道有些人不喜欢,我尽量避免,除非是绝对的Nessery)
以下哪一项对您有用?看看它是否能帮助您:
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;
}
谢谢@Rohit,我会用这个。这是最有意义的。谢谢@Shan,Rohit首先回答了你的第一个建议,所以我接受了他的回答。我无法让bind工作,它看起来确实很有趣,但你的第一个建议很好。谢谢@Ali,只是尝试使用then方法。顺便说一句,
success
和error
方法被弃用,取而代之的是then()
方法。谢谢提醒,但这是针对jQuery的,而不是针对Angular内部使用的jqlite的,请参见此
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;
}