gpt4 book ai didi

javascript - $q。所有 promise (访问控制允许来源)

转载 作者:行者123 更新时间:2023-11-30 11:19:41 25 4
gpt4 key购买 nike

Promises 让程序异步运行并节省时间,因为它同时从两个 URL 检索信息。

由于 promise 是异步运行的,对于 $q.all(promises) 函数,resultList[0] 总是有来自 1.json 的信息而 resultList[1] 有来自 2.json 的信息是真的吗? promises.push() 可能首先没有来自 1.json 的数据吧?由于 promise 异步运行,它可能只有 2.json 中的数据在 1.json 之前。

在其他服务器上运行页面(使用 Promises)后,出现错误“Access-Control-Allow-Origin 不允许来源 'www.dns'。”和“XMLHttpRequest cannot load 'a.json' due to access control checks”,因为Jquery GET 方法可以使用JSONP 来解决错误。但是有没有一种方法可以在 promise 中解决?

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.
});

最佳答案

简短回答:


来自documentation of $q.all (强调我的):

Returns a single promise that will be resolved with an array/hash of values, each value corresponding to the promise at the same index/key in the promises array/hash. If any of the promises is resolved with a rejection, this resulting promise will be rejected with the same rejection value.

简而言之,$q.all 的结果将保持原始列表的顺序,而不管每个 promise 单独解析的顺序如何。

关于javascript - $q。所有 promise (访问控制允许来源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50278660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com