我有一个用 javascript 编写的应用程序。为了工作,我需要下载一堆文件。由于我可以拥有很多可能很长的文件,因此我将下载设为异步:
function download_all(xml, callback){
var i=0;
while(i<xml.smil.length)
{
download(xml.smil[i]);
i=i+1;
}
i=0;
while(i<xml.video.length)
{
download(xml.video[i]);
i=i+1;
}
callback(xml);
}
我的问题是:下载确实有回调,但是由于可以有 5 个 smil 和 30 个视频,我怎样才能确保在调用 download_all 的回调之前完成所有下载?
我想在每次完整下载后(在回调中)增加一个变量,比如
while(smildlcompleted<xml.smil.length && videodlcompleted<xml.video.length)
{
sleep(1000);
}
就像我在 C 中所做的那样,但我找不到睡眠函数,而且它似乎与 js/node.js 的严格语法相反。
有没有办法在回调之前等待所有下载完成?
我确实看过How to execute a Javascript function only after multiple other functions have done? ,因为问题是完全一样的(funcA(),funcB(),当一切都完成后,funcC()),但在我的情况下,funcA()和funcB()可以在我需要之前启动十到二十次执行 funcC()。
我正在尝试修改另一个问题的答案代码来做我需要的事情,但是有人知道更简单的方法吗?