2013-03-25 104 views
0

或者有什么方法可以产生相同的效果,即JavaScript程序停止,直到下载完成(不使用setTimeout)?如何从Google Drive同步下载文件?

+3

这是错误的解决方案。你的js程序应该处理异步性。 – 2013-03-25 14:45:15

+0

像这个API的异步函数需要回调函数,这是在完成操作后调用的函数。你必须把你的代码的续集放在回调中。请参阅文档中的示例。 – 2013-03-25 14:59:23

+0

感谢dystroy和赫姆斯!我们会尝试。 – 2013-03-25 15:17:58

回答

0

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库各不相同,但是这是如何的基本思路以异步处理它。

相关问题