функция не вызывается в разделе then Promise all - PullRequest
0 голосов
/ 14 июля 2020

Внутри моей componentdidmount функции собственного компонента реакции есть этот код

await Promise.all([
        this.fetchDataFromExchange(timeframes[1],false),
        this.fetchDataFromExchange(timeframes[2],false),
        this.fetchDataFromExchange(timeframes[3],false),
        this.fetchDataFromExchange(timeframes[4],false)
    ]).then(() => {this.createConfluenceSummaryTable()})

Если последняя строка кода читается так

]).then(console.log("ALL DONE"))

Тогда я вижу сообщение в консоль после того, как все будет сделано, что является правильным поведением. Итак, я знаю, что обещание, что весь раздел работает. Но что не работает, это когда я пытаюсь вызвать функцию createConfluenceSummaryTable. Эта функция является частью того же компонента, поэтому я обычно вызываю ее, используя this.. Внутри этой функции есть другой оператор console.log, говорящий im running, но он никогда не отображается, что наводит меня на мысль, что он никогда не вызывается.

Почему функция не вызывается? Как мне его правильно назвать?

Я пробовал

]).then(result => {createConfluenceSummaryTable})

]).then(result => {this.createConfluenceSummaryTable()})

]).then(this.createConfluenceSummaryTable())

]).then(createConfluenceSummaryTable())

но ничего не запускает

1 Ответ

0 голосов
/ 14 июля 2020

вам не нужен вызов .then, поскольку вы используете async / await:

try {
    await Promise.all([
        this.fetchDataFromExchange(timeframes[1],false),
        this.fetchDataFromExchange(timeframes[2],false),
        this.fetchDataFromExchange(timeframes[3],false),
        this.fetchDataFromExchange(timeframes[4],false)
    ]);
    this.createConfluenceSummaryTable()
} catch (e) {
    // something failed, check `e`
}

Ваш .then(console.log()) также неверен - вам нужно передать функцию в .then и не вызывайте его прямо здесь: () => console.log(...).

Скорее всего, в одном из ваших обещаний есть ошибка, которую вы можете поймать с помощью try / catch.

...