gpt4 book ai didi

javascript - 如何在 AngularJS 中进行 HTTP 链接

转载 作者:行者123 更新时间:2023-11-28 18:49:37 25 4
gpt4 key购买 nike

我正在尝试进行 HTTP 链接。如果 HTTP 状态不是 200 那么我想打破 promise 链。但使用我当前的解决方案,即使出现错误或非 200 状态,它也会执行到结束。

factory.login=function(username,password){
var url=String(myconfig.url)+"authentication/token/new";
var requestToken="";
var sessionID="";
var defer=$q.defer();

$http({
url:url,
params:{
api_key:"my API Key",

}
}).then(validateWithLogin,HTTPErrorHandler)
.then(getSessionID,HTTPErrorHandler)
.then(function(data){
if (data.status!=200){
defer.reject(data);
}
sessionID=data.data.session_id;
$cookies.put("sessionid",sessionID);
},HTTPErrorHandler);
function HTTPErrorHandler(data){
console.log("HTTP Error happened");
console.log(data);
defer.reject("http error");
}
function validateWithLogin(data){
if (data.status!=200){
defer.reject(data);
}
requestToken=data.data.request_token;
console.log("validate with login"+data);
return $http({
url:String(myconfig.url)+"authentication/token/validate_with_login",
params:{
api_key:"my API Key",
username:username,
password:password,
request_token:requestToken
}
})
}
function getSessionID(data){
if (data.status!=200){
defer.reject(data);
}
return $http({
url:String(myconfig.url)+"authentication/session/new",
params:{
api_key:"my API Key",
request_token:requestToken
}
})
}

};

最佳答案

因为仅仅拒绝你的 promise 是不够的,你还必须带着你的延迟对象返回。

我建议使用它的 sorthand 版本:return $q.reject();

关于javascript - 如何在 AngularJS 中进行 HTTP 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com