2017-02-27 36 views
-1

最近,我讀了Javascript中有一個await運算符,用於等待由異步函數返回的Promise對象。用Javascript同步加載文件並等待運營商

我的目標是隻使用標準Javascript提供的函數,而不需要任何外部庫。所以我的問題是:我怎樣纔能有效地使用await操作符從服務器中依次獲取數據(一個接一個的文件)?

+0

'await'不會讓您的代碼同步。它允許你編寫*看起來*同步的代碼(因此可能更容易遵循)。如果你想依次獲取文件,你只需按順序「等待」提取:var a = await fetchFile(...); var b = await 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> 

有了這個,所有的文件將被載入一個,之後的另一個。 在這些日子裏做這件事非常神奇,因爲它很容易管理以前異步完成的JavaScript中的順序任務。