jquery中的异步foreach
async foreach in jquery
我正在尝试使用c3js显示一些图表。我遇到了一个问题,需要在foreach循环中使用异步操作来"暂停"foreach循环。我可以通过添加一个空警报来破解它,这样就可以完成"工作"(请参阅下面代码中的警报)。我该如何解开它并使其工作?按下按钮时会调用showData函数。
selectedFiles = [];
function showData(){
displayChart(selectedFiles,function(cols){
alert("");//fixme
//display chart
chart = c3.generate({
bindto: '#chart',
data: {
columns: cols,
type:'bar'},
bar: {
width: {
ratio: 0.5
}
}
});
});
}
function displayChart(files,completionHandler)
{
var columns = [];
$.each(files, function( index,value) {
//create array with file name, and averageDuration
var fileName = value + ".json";
var averageDuration;
$.getJSON(fileName, function(json) {
averageDuration = json.averageDuration;
var col = [value,averageDuration];
columns.push(col);
});
});
completionHandler(columns);
}
由于ajax是异步的,所以不能像那样使用它
function displayChart(files, completionHandler) {
var src = $.map(files, function (value) {
var fileName = value + ".json";
return $.getJSON(fileName);
});
$.when.apply($, src).done(function (data) {
var columns;
if (files.length > 1) {
columns = $.map(arguments, function (array, idx) {
return [[files[idx], array[0].averageDuration]]
});
} else {
columns = [
[files[0], data.averageDuration]
]
}
completionHandler(columns);
})
}
演示:Fiddle
相关文章:
- Foreach无法在Typescript中工作
- esri javascript异步打印
- 在forEach内部进行异步调用
- 使用Canvas和ForEach处理异步调用
- 异步执行 forEach,就像瀑布一样
- Angular.foreach异步回调不工作
- jquery中的异步foreach
- 异步forEach,在Node.js中重新排列数组
- 安全地从异步foreach更新值
- 如何使用异步代码在forEach循环上进行promise/callback
- node.js:如何在forEach循环中实现一个带有异步调用的路由方法
- 如何渲染异步数组的结果forEach '功能
- 异步.forEach迭代器数据格式化问题
- 如何在数组内等待异步函数.Javascript中的forEach
- 变量在异步函数中被async覆盖.forEach循环
- Node.js使用async.forEach与异步操作
- 如何使这个异步foreach循环与promise一起工作
- 在内部forEach循环中集成异步mongo调用
- 我如何使用arr ?forEach调用异步JavaScript redis调用
- Node.JS: forEach vs for循环的异步性质