Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 forEach和$http.get如何处理处于挂起状态且从不返回的请求_Javascript_Angularjs - Fatal编程技术网

Javascript forEach和$http.get如何处理处于挂起状态且从不返回的请求

Javascript forEach和$http.get如何处理处于挂起状态且从不返回的请求,javascript,angularjs,Javascript,Angularjs,这是我第一次使用angular,所以对于糟糕的编码非常抱歉 问题:我在从WebApi获取数据的forEach循环中有一个$http.get。在某些呼叫处于挂起状态且从未收到回电之前,这种方法可以正常工作。如何编写一些逻辑来处理挂起的调用 Hourly.js $http.get('http://localhost:52332/api/HourlySummary/?' + 'div=' + divarg + '&line='+ i.line)

这是我第一次使用angular,所以对于糟糕的编码非常抱歉

问题:我在从WebApi获取数据的forEach循环中有一个$http.get。在某些呼叫处于挂起状态且从未收到回电之前,这种方法可以正常工作。如何编写一些逻辑来处理挂起的调用

Hourly.js

         $http.get('http://localhost:52332/api/HourlySummary/?' + 'div=' + divarg + '&line='+ i.line)                       
                .then(function (response) {
                         console.log('http then ', i.line);                             
                         count++;
                         if (i.line == 'S') {
                             storeS.valuesS = response.data;                                 
                             $scope.date = Date.now();
                         } else if (i.line == 'M') {
                             storeM.valuesM = response.data;                                 
                             $scope.date = Date.now();
                         } else if (i.line == 'L') {
                             storeL.valuesL = response.data;                                 
                             $scope.date = Date.now();                                 
                         }

                         if (count == 3) {
                             myLoop();
                         }
                     }, function (response) {
                         console.log("Somehting went wrong ", i.line);
                     });

您可以对请求设置超时:

$http.get('/urlpath/', { timeout: 10000 })   // wait 10 seconds

我认为这将在响应中设置一个状态代码-1。

您需要将代码减少到零,以解决问题。请看:@T.J.Crowder这是我的问题好一点吗。你能帮我回答我的问题吗?我真的很感激。发现挂起的根本原因可能比写几行JS来解决问题要好——我猜是本地服务器出现了问题。理想情况下,服务器应该返回某种结果或超时。您需要确定api调用中发生这种情况的原因并修复它。另外,您提到在forEach循环中有一个http.get。最好只调用一次api,通过传递参数来获取所需的所有数据。@PeterS和mlhuff。非常感谢你的建议。我正试图找出导致Web API出现问题的原因。我真的很感谢你的积极反馈!