В официальной документации Mobx указано, что вы можете вызвать cancel для возвращенного обещания из потока. https://mobx.js.org/best/actions.html Есть только нет примеров, как это сделать.
Контекст: вызов асинхронного действия внутри componentDidMount, нам нужно отменить это действие внутри componentWillUnmount. Хотите также, чтобы setState сообщал, что пользовательский интерфейс может отображаться после выполнения обещания.
componentDidMount() {
this._fetchRawEguide = this.props.combinedEguide.fetchRawEguide(null, true)
.then(() => {
this._fetchRawEguide = null;
this.setState({
loaded: true
});
})
}
componentWillUnmount() {
if (this._fetchRawEguide) {
this._fetchRawEguide.cancel();
}
}
Действие Mobx выглядит примерно так
@action
fetchRawEguide = flow(function*(date, redirectOnError = false) {
try {
const res = yield request(...);
Возникла проблема, когда говорится, что .cancel () не существует, когда он пытается его вызвать.
Я пробовал использовать when () с обычным await / async, похоже, это не сработало. Если у кого-то есть пример для await / async, это было бы здорово.