我有如下的数组。用于循环的异步ajax处理的Javascript关闭
var clients = ['a','b'];
var reports = ['x','y','z'];
var finalData = [];
现在我需要像这样循环。
for(var i=0;i<reports.length;i++){
var response = {report : reports[i]}
for(var j=0;j<clients;j++){
response.client = clients[i];
$.ajax({
url :url,
success : function(data){
response.data = data;
finalData.push(response);
})
});
}
}
由于ajax是异步的,所以它不能正常工作。 另外我需要将它包装到react.js componentDidMount函数中,并将finalData推入状态。
我试图$.each
而不是for循环和.bind(this)
将最终数据推入状态。但我没有得到正确的数据。我听说异步调用应该使用闭包,但没有得到如何在这里实现。 我正在寻找的输出是。
finalData = [
{client:a,report:x,data : 'xyz'},
{client:b,report:x,data : 'xyz'},
{client:a,report:y,data : 'xyz'},
{client:b,report:y,data : 'xyz'},
{client:a,report:z,data : 'xyz'},
{client:b,report:z,data : 'xyz'}
]
你可以使用封闭保存报表和客户创造价值看到更多的细节http://stackoverflow.com/questions/6077357/passing-index-from-for-loop-to-ajax-callback-function-javascript –
您的示例代码中有多个编码错误。例如'客户[我]'应该是'客户[j]'。 –