我试图让一些javascript运行一个for
循环,该循环将创建一个xml文件,然后在循环完成后访问一个允许用户下载文件的链接。目前发生的情况是它在创建文件的过程中完成了一半,然后向用户发送了下载文件的链接。
我按照这个问题的建议创建了一个回调变量并将下载链接移动到另一个函数,但这也没有解决问题。还有其他人知道怎么做吗?我的代码是:
var callbackcount=0;
function populateTemplate(numResults) {
for (i=1; i < numResults; i++) {
$.post('linkToTheFileThatCreatesTheXMLFile', {WithSomeParameters};
download(numResults);
}
}
function download(numResults) {
callbackcount++;
if (callbackcount == numResults) {
window.location.href="linkToPHPThatDownloadsFile";
}
}
非常感谢
编辑: Console.log 结果:
LOG: 230 LOG: 330 LOG: 230 LOG: 330
LOG: 430 LOG: 530 LOG: 630 LOG: 730
LOG: 830 LOG: 930 LOG: 1030 LOG: 1130
LOG: 1230 LOG: 1330
如果 numResults = 7
LOG: 27 LOG: 37 LOG: 47
或者
LOG: 27 LOG: 37 LOG: 47 LOG: 57
等等
编辑: 新代码:
function populateTemplate(numResults) {
var callbackcount = 1;
for (i=1; i < numResults; i++) {
$.post('linkToTheFileThatCreatesTheXMLFile', {WithSomeParameters}, function() {
callbackcount++;
console.log(callbackcount, numResults);
if(callbackcount === numResults - 1) {
window.location.href="linkToPHPThatDownloadsFile";
}
});
}
}