async
/ await
не имеет магического отношения к асинхронной функции.Это дополнение к синтаксису, которое позволяет вам легче работать с обещаниями.
Так что, когда функция возвращает обещание, вам нужно явно его дождаться.
Либо, написав await
передкаждого из них, если вы хотите выполнить их по порядку, как вы показали во втором примере:
reset = async () => {
await this.props.resetFilter();
await this.props.resetClient();
await this.props.resetUser();
};
Или если вы хотите, чтобы эти асинхронные функции чередовались Promise.all
:
reset = async () => {
await Promise.all([
this.props.resetFilter(),
this.props.resetClient(),
this.props.resetUser()
])
};
Если вы не дожидаетесь Обещаний, как в первом примере:
reset = () => {
this.props.resetFilter();
this.props.resetClient();
this.props.resetUser();
};
, тогда цепочка обещаний прерывается для этих трех вызовов, поначалу это может не выглядеть проблемой, особенноесли вы предполагаете, что они всегда решают.Но может привести к необоснованному отклонению, если одно из этих обещаний будет отклонено.