または、ダウンロードが完了するまで JavaScript プログラムを停止する (を使用しない) など、同じ効果を生み出す方法はありますsetTimeout
か?
1 に答える
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 ライブラリによって異なりますが、これが非同期で処理する方法の基本的な考え方です。
于 2013-03-25T15:00:13.897 に答える