Javascript 我正在尝试刮取一些数据并将其导出到CSV

Javascript 我正在尝试刮取一些数据并将其导出到CSV,javascript,jquery,Javascript,Jquery,我正在尝试收集一些数据并将其导出到CSV 我不需要CSV部分的帮助,但我遇到的问题是从$.get()方法中获取变量 我会使用.done()吗。成功()?我不太清楚该怎么办。我尝试了.done()(据我所知),但没有成功 $.get(link, function(response) { var nohover = $(response).find('#row-nohover').find("a"); var total = "country;avg_temp;high_temp;l

我正在尝试收集一些数据并将其导出到CSV

我不需要CSV部分的帮助,但我遇到的问题是从$.get()方法中获取变量

我会使用.done()吗。成功()?我不太清楚该怎么办。我尝试了.done()(据我所知),但没有成功

$.get(link, function(response) {
    var nohover = $(response).find('#row-nohover').find("a");
    var total = "country;avg_temp;high_temp;low_temp;precipitation\n";
    for (var i = 0, len = nohover.length; i < len; i++) {
        var newLink = nohover[i].getAttribute("href");

        newLink = "http://www.domain.com" + newLink;

        $.get(newLink, function(response2) {
            var countryName = $(response2).find("#left-content").find("#headerfont").text();

            countryName = countryName.toLowerCase();
            countryName = capitalizeFirstLetter(countryName);

            //console.log($(response2).find("tbody:eq(2)").children());
            var avgTemp = $(response2).find("tbody:eq(2)").children()[1];
            var highTemp = $(response2).find("tbody:eq(2)").children()[2];
            var lowTemp = $(response2).find("tbody:eq(2)").children()[3];
            var precip = $(response2).find("tbody:eq(2)").children()[4];
            avgTemp = $(avgTemp).children()[1].innerHTML;
            highTemp = $(highTemp).children()[1].innerHTML;
            lowTemp = $(lowTemp).children()[1].innerHTML;
            precip = $(precip).children()[1].innerHTML;
            total += countryName + ";" + avgTemp + ";" + highTemp + ";" + lowTemp + ";" + precip + "\n";
            console.log(total);
        });
    }
});
$.get(链接、函数(响应){
var nohover=$(响应).find('row nohover').find(“a”);
var total=“国家;平均温度;高温;低温;降水量\n”;
对于(变量i=0,len=nohover.length;i

基本上,我希望在循环完成后获得
total
变量。我该怎么做?

您在一个循环中发出多个请求。您应该考虑将这些请求存储到某种结构中,这种结构可以让您知道何时所有请求都已成功完成


查看jQuery延迟函数。

i
将递增到
len-1
,而无需等待内部AJAX请求完成。因此,您需要一个非
i
的变量,该变量在内部AJAX请求的回调中递增

i、 e

for(var i=0,processed=0,len=nohover.length;i
您的数据结构有各种各样的问题。你应该使用一个对象数组:
[{countryName:“US”,avgTemp:70,highTemp:101,lowttemp:0,precip:75},…]
你的可能比另一个更正确,但我还没有完全掌握承诺和延迟对象,所以现在我不得不使用另一个答案。
for (var i = 0, processed = 0, len = nohover.length; i < len; i++) {

    ....

    $.get(newLink, function(response2) {

        ....

        console.log(total);

        processed++;
        if(processed === len -1) {
            // all done, you can use "total" now
        }

    });
}