我仍在学习有角度的promise,并在两次发出“ 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块(基本上它会像我们使用的同步try...catch块一样工作),而不是添加一个错误回调函数,因此代码如下:

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/

10-12 00:41
查看更多