簡體   English   中英

阻止js執行,直到異步請求完成

[英]block js execution until async request is completed

我在預取React應用程序資源時遇到問題。 我有一個函數,應該獲取json資源並將其分配給循環中的對象屬性。 然后,該函數應返回所有已解析的jsons的對象,而不是返回具有未解決的Promise屬性的對象。

是否可以停止執行js代碼,直到完全履行承諾,以便該函數將返回正確的數據?

是的,類似同步請求。

async function getJson (file, url) {

  const response = await fetch(`${url}/${file}.json`);
  const json = await response.json();

  return json;
}

async function getTranslations(files, url) {
    let r = {};

  files.map( (file, i) => {
    r[file] = await getJson(file, url);
  });

  return r;
}

我不認為您應該使用“ map”這樣的方法-用forEach填充一個更好的對象。 盡管我不能保證這就是問題所在。

async function getTranslations(files, url) {
    let r = {};

    files.forEach(file => r[file] = await getJson(file, url));

    return r;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM