0
这是我与挣扎代码:的Ajax调用异步函数结束前,内循环功能
$(document).ready(function() {
var dataSets = [];
getSensorIDs().done(function (result) {
var sensorIDs = jQuery.parseJSON(result);
$.each(sensorIDs, function (index, value) { //loop through each id
getDataBySensorID(value.id).done(function (res) {
var temperatureData = jQuery.parseJSON(res);
var dataPoints = [];
$.each(temperatureData, function (index, value) {
dataPoints.push({
x: index
, y: value.value
});
})
dataSets.push(buildDataset(dataPoints, 1));
alert("Pushed something.");
});
});
alert("Drawed something.");
drawChart(dataSets);
})
});
的问题是:Drawed something
发生提前Pushed something
即使该程序流程不喜欢看它会。我以为我修复了problem
的ajax(这是异步)与.done()
,但它似乎并不是这样。什么是适当的解决这个问题?
我怎么可以重写我的代码,这样我首先创建嵌套代码块中的数据集,然后调用'drawChart'因为目前'dataSets'是空的。 – binaryBigInt
我会移动alert(“Drawed something。”); drawChart(dataSets);'在你的'$ .each'循环之前。 –
您必须在最后一次异步回调中调用'drawChart'。 Promise将对此有所帮助,您可以使用'Promise.all()'等待所有的承诺完成。 – Barmar