我有一个用 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 completed? ,因为问题是完全相同的(funcA()、funcB() 和完成后的 funcC()),但在我的例子中,funcA() 和 funcB() 可以在我需要之前启动十到二十次执行 funcC()。
我正在尝试修改另一个问题的答案代码来做我需要的,但是有人知道更简单的方法吗?
最佳答案
看看 Async Github 图书馆。它可以在node js和浏览器中使用。
您需要 async.parallel
或 async.series
。
关于javascript - 如何在启动 funcC() 之前执行未定义数量的 funcA() 和 funcB()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965597/