나는 여러개의 $ http.get 호출을하는 함수를 가지고있다. 모든 호출이 완료 될 때까지 함수가 대기하도록합니다. 아래 시나리오는
myApp.run(['$httpBackend','$http',function($httpBackend, $http){
$http.get('data1.json').then(function(data){
//do something
});
$http.get('data2.json').then(function(data){
//do something
});
$http.get('data3.json').then(function(data){
//do something
});
//return the function only after all three .then functions are compelte
}]);
약속을 사용하고 있습니다. 그러나 올바른 방법으로 사용하고 있는지 확실하지 않습니다. 현재 함수 .run()은 $ http.get(). then() 호출이 완료되기 전에 반환합니다.
감사합니다. 모든 http 호출이 완료된 후에 만 함수를 반환하고 싶습니다. 'maind = $ q.defer();' '$ q.all ([ '// 코드 ' '])와 같은 주 기능에 한 가지 더 약속을 추가해야합니까? 'maind.resolve (responses);' '}); 'return maind; – Srik
비동기 함수에서'return'을하지 않으면 콜백을 사용합니다 – tymeJV
내 문제가 해결되지 않는다고 생각합니다. 위의 코드에서 모든 http 호출이 완료된 후 "console.log (응답)"이 실행됩니다. 그러나 모든 http 호출이 완료 될 때까지 전체 기능이 대기하지 않습니다. 내 문제는이 함수에서로드 한 JSON 데이터가 다른 서비스에서 사용된다는 것이다. 이러한 서비스는이 함수의 모든 http 호출이 실행되기 전에 실행됩니다. 그래서이 기능을 종료하기 전에 모든 http 호출이 완료되었는지 확인하고 싶습니다. 이것을 달성 할 수있는 방법이 있습니까? – Srik