javascript - 处理 Angular Promise 中的错误

标签 javascript angularjs promise

我仍在学习 Angular promise ,并且有一段代码,我在其中发出两次“GET”请求。我想在调用另一个 get 请求之前运行一个 get 请求。这工作正常,但是我该如何处理这里的错误呢?如果我的第一个 GET 请求出现错误,我如何找出该错误是什么并阻止我的代码调用第二个 GET 请求?我的代码示例将非常有帮助。

apiServices.login = function(user,password,callback) {
$http.get("http://magainteractive.com/prototypes/cisco-ima-dashboard/cms/web/api/login/login/?username="+user+"&password="+password+"")
        .then(function(contentResponse){
            resultsObject.content = contentResponse; 
            return $http.get("http://magainteractive.com/prototypes/cisco-ima-dashboard/cms/web/api/data/list/"); 
        })
        .then(function(dataResponse){
            resultsObject.reports = dataResponse;
            resultsObject.success = 1;
            console.log(resultsObject);

            callback(resultsObject);
            apiServices.useData(resultsObject);
        }); 
}

dummyData.login(username, password, function (dataStatus) {

            if (dataStatus.success = 1) {

                $rootScope.loggedIn = true;
                $rootScope.selectedDashboard = 1; 
            } else {
                console.log("Error");
            }
        });

最佳答案

我会做与 Lucas 略有不同的事情,我更喜欢链接一个 catch block (基本上它的行为就像我们使用的同步 try...catch block )而不是添加错误回调函数,所以代码如下:

return $http.get(url1)
  .then(function(result){
    resultsObject.url1 = result;
    return $http.get(url2);
  }).then(function(result){
    resultsObject.url2 = result;
    return resultsObject;
  }).catch(function(error){
    // handle error.
  });

P.S:你的大部分代码都很好,但我不太确定为什么你有那个 callback(resultsObject);,当你使用 promise 时,回调是多余的,你可以只返回 promise 链 $http.get...

关于javascript - 处理 Angular Promise 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34801288/

相关文章:

javascript - 使用 chartjs 在圆环图中标记问题

javascript - 使用 javascript 隐藏/显示 html 内容

javascript - Promise then 不是 Node Promise 的函数错误

Javascript 链接 promise 似乎改变了执行顺序

javascript - jQuery 显示/隐藏带有复选框的特定 div

javascript - 在矩形内移动对象

javascript - AngularJS $ 注入(inject)器 :unpr issue with Angular Bootstrap modal

javascript - 未添加 AngularJS 类 ng-scope

javascript - ng-click 在 ng-repeat 中使用 ng-include 绑定(bind)所有数据

javascript - Promise.all() 决定为每个 Promise 赋予相同的值