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?