0
或者有什么方法可以产生相同的效果,即JavaScript程序停止,直到下载完成(不使用setTimeout
)?如何从Google Drive同步下载文件?
或者有什么方法可以产生相同的效果,即JavaScript程序停止,直到下载完成(不使用setTimeout
)?如何从Google Drive同步下载文件?
Javascript是异步的,所以你需要异步处理下载。这主要是因为JavaScript运行单线程,并且通常与UI线程共享,所以如果您在下载时阻止了您的代码,则用户将无法与该页面进行交互,直到您的代码完成。
但是,只要您使用下载文件的机制在完成时(最需要)支持回调,则异步处理应该不困难。
假设您有下面的代码:
function doDownload(url) {
doSomeInitialStuff();
startDownload(url); // assuming this would block, which it can't
doSomeOtherStuff();
doMoreOtherStuff();
}
如果您的下载机制支持时,它的完成(一个下载完成或失败后,这就是所谓的功能)的回调,那么你会调整你的代码像所以:
function doDownload(url) {
doSomeInitialStuff();
startDownload(url, onDownloadComplete);
}
function onDownloadComplete() {
doSomeOtherStuff();
doMoreOtherStuff();
}
你如何回调作品(参数传递给它,它是如何提供给下载代码)的细节将取决于你使用JS库各不相同,但是这是如何的基本思路以异步处理它。
这是错误的解决方案。你的js程序应该处理异步性。 – 2013-03-25 14:45:15
像这个API的异步函数需要回调函数,这是在完成操作后调用的函数。你必须把你的代码的续集放在回调中。请参阅文档中的示例。 – 2013-03-25 14:59:23
感谢dystroy和赫姆斯!我们会尝试。 – 2013-03-25 15:17:58