AJAX 在 cicle 完成后返回变量
AJAX return variable after cicle finishes
我正在尝试计算来自外部 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 请求)返回值并期望它正常工作,因为在收到响应时,等待响应的代码已经执行。
此问题的解决方案是在成功中运行必要的代码:回调。 Ω在这种情况下,它仅在数据可用时才访问数据。
相关文章:
- 如何从jquery函数返回变量
- 返回变量作为构造函数
- 从导出的模块返回变量,并在另一个文件(NodeJS)中使用它
- 在JavaScript和knockout.js中,为什么可以'我不返回一个变量吗?为什么我必须返回变量,就好像它
- 如何从匿名函数返回变量
- 在呈现函数中返回变量
- 在设置超时后返回变量
- AngularJS在大括号中返回变量名称,而不是值
- JQuery:创建扩展返回变量未定义
- 我应该从量角器中元素的 getText() 承诺中分配一个变量或返回变量
- AJAX 在 cicle 完成后返回变量
- 如何返回变量并同时重置/删除它
- 如何从 javascript 中的回调函数返回变量
- 返回变量而不声明它的函数
- 正在从数组中返回变量名
- 从reader.onload事件返回变量
- 延迟返回变量,直到数据从Firebase同步
- 函数不't返回变量
- 如何将函数中的返回变量插入HTML表单
- Javascript 方法不返回变量