Javascript $q。所有承诺(访问控制允许来源)
承诺让程序异步运行并节省时间,因为它同时从两个URL检索信息 由于Promissions是异步运行的,对于$q.all(Promissions)函数,resultList[0]总是包含来自1.json的信息,而resultList[1]总是包含来自2.json的信息,这是真的吗?Promissions.push()可能没有来自1.json的数据,对吗?由于promise是异步运行的,因此它可能只包含1.json之前的2.json中的数据 在其他服务器上运行页面(使用Promises)后,它会给出错误“访问控制允许来源不允许来源“www.dns”和“由于访问控制检查,XMLHttpRequest无法加载“a.json”,因为Jquery GET方法可以使用JSONP来解决此错误。但是有没有一种方法可以在承诺中解决问题呢Javascript $q。所有承诺(访问控制允许来源),javascript,asynchronous,promise,cors,same-origin-policy,Javascript,Asynchronous,Promise,Cors,Same Origin Policy,承诺让程序异步运行并节省时间,因为它同时从两个URL检索信息 由于Promissions是异步运行的,对于$q.all(Promissions)函数,resultList[0]总是包含来自1.json的信息,而resultList[1]总是包含来自2.json的信息,这是真的吗?Promissions.push()可能没有来自1.json的数据,对吗?由于promise是异步运行的,因此它可能只包含1.json之前的2.json中的数据 在其他服务器上运行页面(使用Promises)后,它会给出
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.
});
简短回答:是
从(我的)重点: 返回单个承诺,该承诺将使用 值,与同一索引/键上的承诺对应的每个值 在promises数组/hash中。如果使用 拒绝,由此产生的承诺将以同样的方式被拒绝 拒绝值
简而言之,
$q.all
的结果将保持原始列表的顺序,而不管每个承诺单独解析的顺序如何。我明白了。非常感谢。