gpt4 book ai didi

javascript - AngularJS 循环通过 http get req 找到正确的 url

转载 作者:可可西里 更新时间:2023-11-01 16:41:57 26 4
gpt4 key购买 nike

所以我目前正在做一个项目,我正在向大约 1500 个 URL 发出一个 angular 的 http 请求,寻找与我的条件匹配的 json(只有 1 个 URL 匹配)。我目前有一个有时可以工作的实现(但我假设它不是确定性的,因为它的请求是异步的,尽管它可能只是一个错误??)。我对 Angular 还是有点陌生​​,所以我不确定我是否完全正确地做,所以我愿意完全改变代码!

this.matchingurl;
this.data;
this.findUrl = function(condition) {
var that = this;
for (var i = 0; i <= ; i++) {
// this is just looping through the url list
for (var i = 0; i < urlList.length; i++) {
for (var j = 0; j < urlList[i]['list'].length; j++) {
this.url = 'http://' + urlList[i]['list'][j] + restofurl;
var tempUrl = urlList[i]['list'][j];
$http.get(this.url).success(function(data) {
if (condition is met in data) {
that.matchingurl = tempUrl;
return;
}
})
.error(function(data){
// error handling
});
}
}
}
}

TLDR:matchingUrl 不是我所期望的?仍然进入“条件”循环,但没有吐出正确的 url。对于任何子列表,无论对错,总是给我相同的“url”。

最佳答案

我建议你使用 angularjs 的 $q promise 来完成这项任务,你可以一次连续检查一个 url(如果你问我很慢),或者一次获得所有结果通过并行请求时间。下面,我对后者做了一个粗略的实现

this.findUrl = function(condition) {
var urls =[], self = this, oUrl; // collect all the urls
urlList.forEach(function(list){
list.forEach(function(url){
oUrl.push(url);
urls.push('http://' + url + restofurl); // not sure where you are getting this restofurl from...
});
});

$q.all(urls.map(function(url){
return $http.get(url); // returns promise for each url, thus mapping all urls to promise.
})).then(function(datas){
datas.some(function(data, i){
if(data == condition){ // change as per requirement
self.matchingurl = oUrl[i];
return true;
}
})
});
}

编辑:

一次检查一个 url 完成同样的事情:

this.findUrl = function(condition) {
var urls =[], self = this, oUrl; // collect all the urls
urlList.forEach(function(list){
list.forEach(function(url){
oUrl.push(url);
urls.push('http://' + url + restofurl); // not sure where you are getting this restofurl from...
});
});

function check(i){
function fail(){ // move to check the next url in the array
i++;
if(i<urls.length) return check(i);
console.log('none of the urls are matching');
}

return http.get(urls[i]).then(function(data){
if(data == condition){ // change as per requirement
self.matchingurl = oUrl[i];
}else{
fail();
}
}).catch(fail);
}
check(0); // start the chain
}

关于javascript - AngularJS 循环通过 http get req 找到正确的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31533262/

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