【发布时间】:2016-03-31 18:30:06
【问题描述】:
您好,我正在尝试在我的 Angular 项目中使用 q-library 实现 Promise Chaining,下面是我的 2 种方法及其链接方式。我还发布了方法实现以了解我的问题。现在在pathUserDataFromAuthService 方法中,我想使用setEtag() 方法访问我在第一个Promise 中设置的Etag 值,即getUserDataFromAuthServer,这里的问题是getEtag() 方法在第一个承诺数据被解决之前被调用。
如何确保出现正确的 Etag 值
在这方面的任何帮助都会很棒
getUserDataFromAuthServer(user)
.then(pathUserDataFromAuthService(user))
方法代码如下
getUserDataFromAuthServer = function(user){
var defer=$q.defer();
$http.get(autherizationURL+'/'+'api/users/'+user.username)
.then(function(response){
var ETag =response.headers().etag;
console.log("etag"+ETag)
setEtag(ETag)
console.log("Etag Set changed");
defer.resolve(response.data);
},function(error){
defer.reject(error.statusText);
});
return defer.promise;
};
var pathUserDataFromAuthService = function (user){
var defer=$q.defer();
var passwordtobesaved ={
"firstName": user.firstName,
"lastName": user.lastName
};
var tag = getEtag();
$http.put(autherizationURL+'/'+'api/users/'+user.username,passwordtobesaved,{
headers:{
"If-Match": tag
}
}).then(function(response){
defer.resolve(response.data);
},function(error){
defer.reject(error.statusText);
});
return defer.promise;
};
【问题讨论】:
-
您必须将回调函数传递给
then,而不是promise(调用函数的结果)
标签: angularjs promise angular-promise