В настоящее время я столкнулся с проблемой в моем приложении. Я пытаюсь прочитать несколько файлов JSON, но метод их чтения возвращается до того, как будут прочитаны все файлы.
arrJsonPathFinal - это список файлов JSON.
Promise.all(arrJsonPathFinal.map(url =>
fetch(url).then(resp => resp.json())
)).then(jsonValue => {
jsonValue.forEach((json, index) => {
strJsonData += '"' + arrJsonPath[index] + '":' + JSON.stringify(jsonValue[index]) + ",";
});
return JSON.parse("{" + strJsonData.substring(0, strJsonData.length - 1) + "}");
});
У вас есть идеи, как с этим справиться? Пытался найти решение с помощью наблюдаемых и обещаний, но пока я невежественен.





Promise.all(arrJsonPathFinal.map(url =>
fetch(url)
)).then(resps => {
resps.forEach((resp, index) => {
jsonValue=> resp.json())
strJsonData += '"' + arrJsonPath[index] + '":' +
JSON.stringify(jsonValue[index]) + ",";
});
return JSON.parse("{" + strJsonData.substring(0, strJsonData.length - 1) +
"}");
});
У меня это не работает, потому что сам код показывает некоторые ошибки. индекс неизвестен и т. д.
Что вы имеете в виду под «методом их всех»? Приведенный выше код находится в функции, и вы ожидаете, что он вернет результат строки
return JSON.parse("{" + strJsonData.substring(0, strJsonData.length - 1) + "}");? Согласно это, вы все равно получаетеPromise, и вам нужно записать его вthen(), или вawait, или что-то в этом роде. Проверь это stackblitz.com/edit/js-i2yrtj!