Обещания позволяют программе выполняться асинхронно и экономить время, поскольку она извлекает информацию из обоих URL-адресов одновременно.
Поскольку обещания выполняются асинхронно, для функции $ q.all (promises) верно, чтоresultList [0] всегда содержит информацию из 1.json, а resultList [1] содержит информацию из 2.json?Promises.push () может не иметь данных из 1.json сначала верно?Поскольку обещание выполняется асинхронно, оно может иметь данные только от 2.json до 1.json.
После запуска страницы (с использованием Promises) на другом сервере выдается ошибка «Origin» www.dns 'не разрешено Access-Control-Allow-Origin. "и «XMLHttpRequest не может загрузить« a.json »из-за проверок контроля доступа», поскольку метод Gquery Jquery может использовать JSONP для устранения ошибки.Но есть ли способ, который можно решить в обещаниях?
var promises = [];
var loadingJson = function(url){
var defer = $q.defer();
$http.get(url).then(function(results){
defer.resolve(results);
}, function(err){
defer.reject(err);
});
return defer.promise;
};
promises.push(loadingJson('example.com/1.json'));
promises.push(loadingJson('example.com/2.json'));
$q.all(promises).then(function(resultList){
// Your hanadling here, resultList contains the results of both API calls.
}, function(errList){
// Your error handling here.
});