2017-02-27 4 views
-1

最近、私は、非同期関数によって返されたPromiseオブジェクトを待つJavascriptのオペレータが待っていることを読んだ。JavascriptでAwaitオペレータと同期してファイルをロードする

私の目標は、標準のJavascriptで提供されている関数を外部ライブラリなしで使用することです。だから私の質問です:どのように効率的にサーバーから順次(1つのファイルを別のファイル)をフェッチするawait演算子を効率的に使用できますか?

+0

'await'はあなたのコードを同期させません。これは*シンクロするようなコードを書くことを可能にします。ファイルを順番にフェッチしたい場合は、順番にフェッチを待ちます: 'var a = await fetchFile(...); var b = fetchFile(...)を待ちます。 ... '。 –

+0

必要なのは[Fetch API](https://developer.mozilla.org/en/docs/Web/API/Fetch_API)だけです。 – Ryan

答えて

0

私が探していたものを手に入れました。 最初のステップは、async functionを作成し、その関数内で同期しているかのように実行する必要があるすべてのコードを配置することです。ここで は、そのためのコードスニペットです:これにより

<html> 
<body> 
</body> 
</html> 

<script> 

var fileList = [ 
'test_1.txt', 
'test_2.txt', 
'test_3.txt', 
'test_4.txt', 
'test_5.txt' 
]; 

async function loadFiles() 
{ 
    for (i = 0; i < fileList.length; i++) 
    { 
     await fetch(fileList[i]).then(function(response){ 
      return response.text(); 
     }).then(function (text){ 
      console.log(text); 
     }); 
     console.log("loaded " + fileList[i]); 
    } 
} 

loadFiles(); 

</script> 

、すべてのファイルが別の後に、1をロードされます。 以前は非同期で行われていたjavascriptのシーケンシャルタスクを管理するのは簡単なので、これは非常に驚くべきことです。

関連する問題