Javascript 如何在启动func()之前执行未定义数量的funcA()和funcB()?
我有一个用javascript编写的应用程序。 为了工作,我需要下载一堆文件。 由于我可以有很多文件,这些文件可能很长,因此我将下载设置为异步:Javascript 如何在启动func()之前执行未定义数量的funcA()和funcB()?,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我有一个用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.le
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);
}
函数下载\u all(xml,回调){
var i=0;
(i查看库。它可以在node js和浏览器中使用。
您可能需要async.parallel
或async.series
尝试此代码
function download_all(xml, callback){
var i=0 , no_of_downloads , downloadsCompleted;
no_of_downloads = xml.smil.length + xml.video.length;
downloadsCompleted = 0;
function afterDownload(){
downloadsCompleted + =1;
if(downloadsCompleted ===no_of_downloads ) { // all downloads are completed
callback(); //call the callback here
}
}
while(i<xml.smil.length)
{
download(xml.smil[i],afterDownload);
i=i+1;
}
i=0;
while(i<xml.video.length)
{
download(xml.video[i],afterDownload);
i=i+1;
}
}
函数下载\u all(xml,回调){
var i=0,无下载,下载完成;
下载数量=xml.smil.length+xml.video.length;
下载完成=0;
函数afterDownload(){
下载完成+=1;
如果(downloadsCompleted==无下载次数){//所有下载均已完成
callback();//在此处调用回调
}
}
虽然(我想下载是并行的还是串行的?因为有很多下载,我认为并行的更好,但我必须确保在所有下载完成后发送回调。这似乎是异步的。串行是我要找的,如果我找到如何正确使用它,但它看起来像你需要异步。并行重新审视我以前的问题。async
是一个非常好的工具,后来我广泛使用了它。我不得不对代码的某些部分进行调整,但是这个函数工作得非常好
function download_all(xml, callback){
var i=0 , no_of_downloads , downloadsCompleted;
no_of_downloads = xml.smil.length + xml.video.length;
downloadsCompleted = 0;
function afterDownload(){
downloadsCompleted + =1;
if(downloadsCompleted ===no_of_downloads ) { // all downloads are completed
callback(); //call the callback here
}
}
while(i<xml.smil.length)
{
download(xml.smil[i],afterDownload);
i=i+1;
}
i=0;
while(i<xml.video.length)
{
download(xml.video[i],afterDownload);
i=i+1;
}
}