Javascript 如何从Google Drive同步下载文件?

Javascript 如何从Google Drive同步下载文件?,javascript,google-drive-api,synchronous,Javascript,Google Drive Api,Synchronous,或者有没有办法产生相同的效果,即JavaScript程序停止直到下载完成(不使用setTimeout)?JavaScript是异步的,因此您需要异步处理下载。这主要是因为javascript运行单线程,并且通常与UI线程共享,因此如果您在下载时阻止了代码,则在代码完成之前,用户将无法与页面交互 但是,异步处理它应该不难,只要下载文件时使用的机制支持回调(大多数人应该这样做) 假设您有以下代码: function doDownload(url) { doSomeInitialStuff();

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

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程序应该处理异步性。类似于此API的异步函数会进行回调,即在操作完成后调用的函数。您必须将代码的续集放入回调中。请参阅文档中的示例。谢谢dystroy和Herms!我们会试试的。