С вашим дизайном вы проверяете, является ли тайм-аут последним.
function xyz() {
console.log("done");
}
var dataPoints = ["a", "b", "c", "d", "e"]
for (var i = 0; i < dataPoints.length; i++) {
(function(i) {
setTimeout(function() {
console.log(i, dataPoints[i])
if (i === dataPoints.length - 1) {
xyz()
}
}, 500 * i);
})(i);
}
Вам лучше использовать очередь
function xyz() {
console.log("done");
}
var theData = ["a", "b", "c", "d", "e"]
function displayData(dataPoints, done) {
var iteration = 0
function next() {
console.log(dataPoints[iteration])
iteration++
if (iteration < dataPoints.length) {
window.setTimeout(next, 1000)
} else {
done()
}
}
next()
}
displayData(theData, xyz)