2017-09-13 8 views
1

私は反応するアプリケーションのリソースを先読みする際に問題があります。私はjsonのリソースをフェッチしてループ内のオブジェクトプロパティに割り当てるべき関数を持っています。この関数は、jsonsがすでに解決されているオブジェクトを返しますが、未解決の約束事としてプロパティを持つオブジェクトを返します。非同期要求が完了するまでブロックjsが実行されます

約束事がフルフィルされるまで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; 
} 

答えて

0

私はあなたがforEachの方が優れているオブジェクトを作成するために、そのような 'マップ'を使うべきではないと思います。私はそれが問題であることを保証することはできませんでしたが。

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

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

    return r; 

}

関連する問題