Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度测量中的误差处理_Javascript_Angularjs_Promise - Fatal编程技术网

Javascript 角度测量中的误差处理

Javascript 角度测量中的误差处理,javascript,angularjs,promise,Javascript,Angularjs,Promise,我仍然在学习angular中的Promissions,并且有一段代码,其中我两次发出“GET”请求。我想在调用另一个get请求之前运行一个get请求。这很好,但是我如何处理这里的错误呢?如果我的第一个get请求出现错误,如何找出错误并防止代码调用第二个get请求?我的代码示例将非常有用 apiServices.login = function(user,password,callback) { $http.get("http://magainteractive.com/prototypes/ci

我仍然在学习angular中的Promissions,并且有一段代码,其中我两次发出“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");
            }
        });

您可以在第一个回调处理中传递第二个参数。如果请求中存在错误,则会触发此操作,然后您可以根据需要进行处理:

 $http({
   method: 'GET',
   url: '/someUrl'
 }).then(function successCallback(response) {
     // this callback will be called asynchronously
     // when the response is available
   }, function errorCallback(response) {
     // called asynchronously if an error occurs     
     // or server returns response with an error status.
   });
或者在您的编码中:

$http.get('/someUrl').then(successCallback, errorCallback);
更多信息

您的代码如下所示:

$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/"); 
    }, function(error){ 
             //HANDLE ERROR HERE
       })
    .then(function(dataResponse){
        resultsObject.reports = dataResponse;
        resultsObject.success = 1;
        console.log(resultsObject);

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

我会做一些与Lucas稍有不同的事情,我更喜欢链接一个catch块(基本上它的行为类似于我们使用的synchronous
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.
  });

附言:你的大部分代码都很好,但我不确定你为什么有
回调(resultsObject)
,当您使用承诺时,回调是多余的,您可以只返回承诺链
$http。get…

我也是这样工作的,我认为在最后链接一个
catch
是非常整洁的!我完全同意你的意见。@mido谢谢!我编辑了我的答案,以向您展示我使用回调的原因。我使用它将resultsObject作为“dataStatus”带到我的登录控制器中。这将检查我的登录凭据是否为真。这看起来不错,但如果我希望对这两个http请求进行错误处理,该怎么办?我会在第二个then函数之后添加另一个函数(错误)吗?完全正确。在我的示例中,最后一行将从
}更改为到:
},函数(错误){//asd})