AJAX 在 cicle 完成后返回变量

AJAX return variable after cicle finishes

本文关键字:返回 变量 cicle AJAX      更新时间:2023-09-26

我正在尝试计算来自外部 API 的结果总和,我需要为我拥有的每个关键字发出一个请求。代码成功执行,但函数在所有 ajax 请求完成之前返回值。我试图添加"异步"参数,但它已被弃用,然后我做了这个:

function calcTotal(arr) {
var t_docs = 0;
var i = 0;
var len = arr.length;
var aReq = []
for(i = 0; i < len; i++)
{
    console.log(i);
    var apiDataLQKT = {
        keyword: arr[i],
        start_date: "2015-01-01",
        end_date: "2015-06-01",
        format: 'jsonp',
        sources_types: sources,
        sources_names: names,
        domains: argDomains,
        words: terms,
        author_id: usrID,
        sentiment:sentiment,
        positive_threshold:posThresh,
        negative_threshold:negThresh,
        language:lang,
        author_location:geolocations,
        author_gender:genderID,
        typologies:typID,
        document_type:docType,
        source_base_url:'',
        emotion:'',
        metadata:'',
        order_sort:'',
        order_by:''
    }
    console.log(apiDataLQKT);
    aReq[i] = $.ajax({
        type:'GET',
        url:apiUrl+'LightQuantitativeKeywordTrend',
        contentType: 'application/javascript',
        crossDomain: true,
        dataType: 'jsonp',
        data: apiDataLQKT,
        success: function(json) {
            var res = json.LightQuantitativeKeywordTrend;
            t_docs += res.count;
            console.log("T_DOCS[" + arr[i] + "]: " + t_docs);
        }
    });
}
aReq[arr.length-1].done(function(data){
    return t_docs;
});
}

控制台日志输出:

Total: 0
T_DOCS[undefined]: 1445
T_DOCS[undefined]: 1521
...

我还能尝试什么?

不能从异步调用(如 AJAX 请求)返回值并期望它正常工作,因为在收到响应时,等待响应的代码已经执行。

此问题的解决方案是在成功中运行必要的代码:回调。 Ω在这种情况下,它仅在数据可用时才访问数据。