gapi.client.load('myapi1', 'v1', function() {
gapi.client.load('myapi2', 'v1', function() {
gapi.client.load('myapi3', 'v1', function() {
$rootscope.$broadcast("All loaded")
}, '/_ah/api');
}, '/_ah/api');
}, '/_ah/api');
Прямо сейчас эти apis загружаются один за другим. Я хочу, чтобы они загружались в async, и когда все apis загружены, я хочу передать сообщение. Является ли это возможным. Если да, то как?
Пример был бы очень полезен
var counter =
gapi.client.load('api1', 'v1', function() {counter--}, '/_ah/api');
gapi.client.load('api2', 'v1', function() {counter--}, '/_ah/api');
gapi.client.load('api3', 'v1', function() {counter--}, '/_ah/api');
var check_if_apis_are_loaded = function(){
console.log(counter)
if(counter == 0){
$rootscope.$broadcast("All loaded");
clearInterval(intervalId)
}
}
var intervalId = setInterval(check_if_apis_are_loaded, 300);
Я не мог понять, но вышеупомянутый ответ не работает иногда, поэтому я создал работу для меня
Вы можете попробовать smt следующим образом:
call_1 = gapi.client.load('myapi1', 'v1', function() {}, '/_ah/api');
call_2 = gapi.client.load('myapi2', 'v1', function() {}, '/_ah/api');
call_3 = gapi.client.load('myapi3', 'v1', function() {}, '/_ah/api');
$q.all([call_1, call_2, call_3]).then(function() {
$rootscope.$broadcast("All loaded");
}
Служба $ q будет ждать завершения всех вызовов, а затем транслирует ваши сообщения.
Надеюсь, поможет.
Также я прочитал бы документы $ q и отличную статью на callbackhell