Как связать вызовы Angular $ http.get ()?

17

У меня есть контроллер, которому нужно получить два отдельных ресурса REST, которые будут заполнять два выпадающих меню. Я хотел бы избежать заполнения каждого из них до тех пор, пока не вернутся вызовы $ http.get (), так что выпадающие списки будут заполнены одновременно, вместо того, чтобы просачиваться один за другим.

Можно ли связать вызовы $ http.get () и изящно установить переменные $ scope для обоих возвращенных массивов, без необходимости писать логику состояния для обоих сценариев, например. a возвращает до b, b возвращается до?

    
задан brushleaf 31.03.2013 в 06:34
источник

3 ответа

35

Возвращаемое значение вызова функции Angular $ http является объектом Promise , используя $ q (обещание / отложенная реализация, вдохновленная     

источник
5

Вы имеете в виду что-то вроде этого:

function someController( $scope, $http, $q ) {
    var first_meth = $http.get("first_url"),
        second_meth = $http.get("second_url");
    $q.all([first_meth, second_meth]).then(function(all_your_results_array) { 
        //here you'll get results for both the calls
    });
}

Ссылка: Угловой JS Doc

    
ответ дан Sudhir Bastakoti 31.03.2013 в 06:53
источник
0

Здесь вы можете использовать библиотеку java-скриптов Async: Ссылка .

Используйте вызов серии. Он сделает 2 вызова, а затем вызовет один обратный вызов, когда оба выполнены.

    
ответ дан user1007983 08.08.2013 в 16:36
источник