Javascript I';我试图使用HERE';以两个批处理的方式发出大约1k ajax请求;2014年rev地理编码和纽约黄色出租车数据的api
以下是我迄今为止所做的工作Javascript I';我试图使用HERE';以两个批处理的方式发出大约1k ajax请求;2014年rev地理编码和纽约黄色出租车数据的api,javascript,json,ajax,api,request,Javascript,Json,Ajax,Api,Request,以下是我迄今为止所做的工作 let fileInput = document.getElementById('inputfile'); fileInput.addEventListener('change', function () { let file = fileInput.files[0]; var textType = /text.*/; if (file.type.match(textType)) { let reader = new F
let fileInput = document.getElementById('inputfile');
fileInput.addEventListener('change', function () {
let file = fileInput.files[0];
var textType = /text.*/;
if (file.type.match(textType)) {
let reader = new FileReader();
let requests = [];
let rev_geo = [];
let content;
console.log('Begin Fetching!');
reader.onload = async function () {
content = JSON.parse(reader.result);
for (let i = 0; i < 1000; i++) {
let pickup = $.ajax({
url:
`https://revgeocode.search.hereapi.com/v1/revgeocode?at=${content[i].pickup_latitude}%2C${content[i].pickup_longitude}&lang=en-US&apikey=<xxx>`,
type: "GET",
})
let dropoff = $.ajax({
url:
`https://revgeocode.search.hereapi.com/v1/revgeocode?at=${content[i].dropoff_latitude}%2C${content[i].dropoff_longitude}&lang=en-US&apikey=<xxx>`,
type: "GET",
});
// Build requests array.
// Push dropoff and pickup stuff only when the 2 requests above are done
requests.push($.when(pickup, dropoff).done(function (data_pickup, data_dropoff) {
setTimeout(function () {
if ((data_pickup[0].items.length > 0 && data_dropoff[0].items.length > 0) &&
(data_pickup[0].items && data_dropoff[0].items)) {
rev_geo.push({
pickup_address: data_pickup[0].items[0].address,
pickup_lat: data_pickup[0].items[0].lat,
pickup_lng: data_pickup[0].items[0].lng,
pickup_distance: data_pickup[0].items[0].distance,
pickup_mapView: data_pickup[0].items[0].mapView,
dropoff_address: data_dropoff[0].items[0].address,
dropoff_lat: data_dropoff[0].items[0].lat,
dropoff_lng: data_dropoff[0].items[0].lng,
dropoff_distance: data_dropoff[0].items[0].distance,
dropoff_mapView: data_dropoff[0].items[0].mapView,
});
}
}, 1000);
}));
}
// Resolving all promises
await Promise.all(requests).then(function (e) {
// Stringlify data and writing down JSON file
let json_data = JSON.stringify(rev_geo);
json_data = [json_data];
let blob = new Blob([json_data], {
type: 'text/plain;charset=utf-8'
});
let isIE = false || !!document.documentMode;
if (isIE) {
window.navigator.msSaveBlob(blob, "Converted-YellowTaxi.txt");
} else {
var url = window.URL || window.webkitURL;
link = url.createObjectURL(blob);
var a = $("<a />");
a.attr("download", "Converted-YellowTaxi.txt");
a.attr("href", link);
$("body").append(a);
a[0].click();
$("body").remove(a);
}
}).catch(function(e){
// Error seems to be logging at this line of code.
console.log(e);
});
};
reader.onerror = function (e) {
console.log(e);
}
reader.readAsText(file);
} else {
console.log("File not supported!");
}
});
let fileInput=document.getElementById('inputfile');
fileInput.addEventListener('change',函数(){
让file=fileInput.files[0];
var textType=/text.*/;
if(file.type.match(textType)){
let reader=new FileReader();
让请求=[];
让rev_geo=[];
让内容;
log('beginfetching!');
reader.onload=异步函数(){
content=JSON.parse(reader.result);
for(设i=0;i<1000;i++){
让pickup=$.ajax({
网址:
`https://revgeocode.search.hereapi.com/v1/revgeocode?at=${content[i]。拾取纬度}%2C${content[i]。拾取经度}&lang=en-US&apikey=`,
键入:“获取”,
})
let dropoff=$.ajax({
网址:
`https://revgeocode.search.hereapi.com/v1/revgeocode?at=${content[i].衰减纬度}%2C${content[i].衰减经度}&lang=en-US&apikey=`,
键入:“获取”,
});
//生成请求数组。
//仅当上述两个请求完成时,才推送和接收内容
请求.push($.when(拾取,衰减).done(函数(数据拾取,数据衰减){
setTimeout(函数(){
if((数据拾取[0].items.length>0&&data\u衰减[0].items.length>0)&&
(数据提取[0]。项目和数据提取[0]。项目){
地理推({
收货地址:数据收货[0]。项目[0]。地址,
拾取时间:数据拾取[0]。项目[0]。纬度,
提取lng:数据提取[0]。项目[0]。lng,
拾取距离:数据拾取[0]。项目[0]。距离,
拾取地图视图:数据拾取[0]。项目[0]。地图视图,
衰减\地址:数据衰减[0]。项[0]。地址,
衰减时间:数据衰减时间[0]。项[0]。衰减时间,
卸货港:数据卸货港[0]。项目[0]。卸货港,
衰减距离:数据衰减[0]。项[0]。距离,
衰减\地图视图:数据衰减[0]。项[0]。地图视图,
});
}
}, 1000);
}));
}
//解决所有承诺
等待承诺。所有(请求)。然后(函数(e){
//Stringlify数据和写下JSON文件
让json_data=json.stringify(rev_geo);
json_数据=[json_数据];
设blob=newblob([json_data]{
类型:“文本/普通;字符集=utf-8”
});
让isIE=false | |!!document.documentMode;
如果(isIE){
window.navigator.msSaveBlob(blob,“Converted yellowstaxi.txt”);
}否则{
var url=window.url | | window.webkitURL;
link=url.createObjectURL(blob);
变量a=$(“
当我将for循环降低到大约500或更低时,情况似乎很好,但最终我仍然有1000多个响应,远远超过了我在循环中设置的500个响应。
我是不是误解了什么
抱歉,代码太长了,我只是一个JavaScript初学者,对此我已经努力了一段时间。如果有任何帮助,我们将不胜感激。@codeLearnerrr我遇到过fetch,但不知何故决定不使用它。有没有一种方法可以使用多个嵌套的Promise all with fetch来构建Promise all?