Как я называю редукционные действия последовательно - PullRequest
0 голосов
/ 17 марта 2019

Я знаю, что мне нужно использовать обещания, но я не могу вставить их в код, чтобы достичь того, чего я хочу.

Итак, у меня есть 3 редукционных действия:

getAllCoins()
getUserCoins()
setUserCoinPortfolio(a, b)

Действие set требует возвращаемых значений от обоих действий get, поэтому его необходимо вызывать после завершения этих функций. Оба попадания могут быть уволены одновременно. Это то, что я инициирую два вызова:

 refresh = async () => {
    this.setState({refreshing: true});
    this.props.getAllCoins();
    this.props.getUserCoins();
    this.setState({refreshing: false});
};

componentDidMount = () => {
    this.refresh();
}

Должен ли я объединить их в одно действие? Должен ли я держать их отдельно, но как мне структурировать звонки?

Любая помощь очень ценится

1 Ответ

0 голосов
/ 18 марта 2019

Поскольку вы используете asyn, вы можете ждать первых двух действий, а после того, как они завершены, вы можете позвонить set. Нечто вроде ниже.

refresh = async () => {
    this.setState({refreshing: true});
    await this.props.getAllCoins();
    await this.props.getUserCoins();
    this.setState({refreshing: false});
};

или

refresh = async () => {
    this.setState({refreshing: true});
    await Promise.All([this.props.getAllCoins,this.props.getUserCoins]);
    this.setState({refreshing: false});
};
...