如何同步从Google云端硬盘下载文件?

时间:2013-03-25 14:43:48

标签: javascript google-drive-api synchronous

或者有没有办法产生相同的效果,即JavaScript程序在下载完成之前停止(不使用setTimeout)?

1 个答案:

答案 0 :(得分: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();
}

你回调的工作原理(args传递给它,它是如何提供给下载代码的)将根据你正在使用的js库而有所不同,但这是如何异步处理它的基本思路。 / p>