У меня есть метод жизненного цикла componentDidMount, который вызывает рекурсивный асинхронный метод, и я хочу, чтобы рекурсивная функция возвращала обещание после того, как все данные были получены.
async componentDidMount() {
let response = await fetch(`${STORY_URL}${this.props.match.params.id}.json`);
let result = await response.json();
totalComments = result.descendants;
await this.fetchComments(result.kids, MARGIN);
this.setState({
by: result.by,
time: calculateTimeDifference(result.time)
});
}
и вызываемая функция
async fetchComments(comment, margin) {
return new Promise((resolve, reject) => {
comment.map(async commentId => {
let response = await fetch(`${STORY_URL}${commentId}.json`);
let result = await response.json();
comments.push({
by: result.by,
margin: margin
});
if (comments.length === totalComments + 1) resolve();
if (result.kids !== undefined) this.fetchComments(result.kids, margin * 2);
});
});
}
но метод разрешения не возвращается обратно в componentDidMount до setState. Я проверил консольной регистрации. Я не знаю, что я делаю не так