Angular $http : 'timeout' 설정에 대한 약속 설정
Angular docs에서는 '타임아웃' 설정을 수치 또는 약속 중 하나로 설정할 수 있다고 기재되어 있습니다.
timeout – {number|Promise}: 밀리초 단위의 타임아웃 또는 해결되면 요구를 중단하는 약속.
하지만 약속을 어떻게 해야 할지 모르겠어요.번호와 약속을 설정하려면 어떻게 해야 합니까?기본적으로 http 콜(약속)이 타임아웃으로 인해 에러가 났는지 알고 싶습니다.난 차이를 구별할 수 있어야 해도와주셔서 감사합니다!!!
이 코드는 $httpBackend 소스 코드입니다.
if (timeout > 0) {
var timeoutId = $browserDefer(timeoutRequest, timeout);
} else if (timeout && timeout.then) {
timeout.then(timeoutRequest);
}
function timeoutRequest() {
status = ABORTED;
jsonpDone && jsonpDone();
xhr && xhr.abort();
}
timeout.then(timeoutRequest)
는 약속이 해결되면(거부되지 않음) timeoutRequest가 호출되고 xhr 요구가 중단됨을 의미합니다.
요구가 타임아웃일 경우reject.status === 0
(주의: 네트워크 장애의 경우 0도 됩니다).예:
app.run(function($http, $q, $timeout){
var deferred = $q.defer();
$http.get('/path/to/api', { timeout: deferred.promise })
.then(function(){
// success handler
},function(reject){
// error handler
if(reject.status === 0) {
// $http timeout
} else {
// response error status from server
}
});
$timeout(function() {
deferred.resolve(); // this aborts the request!
}, 1000);
});
같은 질문이 있습니다.Http Interceptor를 사용한 Angular 1.5 타임아웃을 http에서 구현하는 방법에 대해 확인하실 수 있습니다.가로채기. jsFiddle은 anwser에 포함되어 있습니다.모든 크레딧은 https://stackoverflow.com/users/3959997/mita로 보내주시기 바랍니다.
임베디드 시스템에서 작업하고 있었습니다.물리 디바이스이기 때문에 가끔 외출을 하고 있었습니다.따라서 $timeout을 사용하여 며칠, 몇 달, 몇 년 동안 전원이 켜져 있었습니다.이 동작은 수정되었습니다.
빠른 예(http 약속의 타임아웃 래퍼)
모듈
var myApp = angular.module('myApp',['ngRoute']);
서비스
var yourServiceModule = myApp.service('YourService', function ($http) {
this.your_method = function (a) { return a*a};
});
컨트롤러
//just wrap your service,http call using $timeout
$timeout(function() {
//vanilla service call
YourService.your_method().then(
function (response) {
//console.log("sync_with_cloud: "+ response);
$scope.check_cloud_port_statuses_progress=100;
//...
},
function(data) {
// Handle error here
$rootScope.global_config_1 += "\nError(333): cant connect to cloud at "+Date.now();+"\n\n";
$scope.check_cloud_port_statuses_progress = -1;
}
);
}, 8);
언급URL : https://stackoverflow.com/questions/21915834/angular-http-setting-a-promise-on-the-timeout-config
'programing' 카테고리의 다른 글
jQuery에서 .fail로 전송되는 파라미터는 무엇입니까? (0) | 2023.03.11 |
---|---|
JSON에서는 여러 줄의 스트링을 사용할 수 있습니까? (0) | 2023.03.11 |
중첩된 개체를 쿼리하려면 어떻게 해야 합니까? (0) | 2023.03.11 |
html 입력의 속성을 덮어쓸 수 있는 것은 무엇입니까? (0) | 2023.03.11 |
메타 및 이전 날짜를 포함한 쿼리를 게시합니다. (0) | 2023.03.06 |