Вы можете использовать токен отмены , предоставленный axios, для отмены ожидающих запросов в начале нового (вам придется создавать новый токен каждый раз, как мне кажется).
Однако я помню, что у меня было несколько проблем с этим методом (он заморозил все мое приложение), и я в итоге использовал Node-Fetch и AbortController, который отлично подходит для моего использования.(Как видно из в этом ответе )
РЕДАКТИРОВАТЬ: Вот примерно как я это делаю, обратите внимание, что моя функция для запросов является асинхронной (используя Context API, но вы должны быть в состоянии сделать то же самое с Mobx)
import React from 'react';
import Context from './Context';
import fetch from 'node-fetch';
class Provider extends React.Component {
constructor(props) {
super(props);
this.state = {
isLoading: false,
controller: new AbortController(),
};
this.queryAll = this.queryAll.bind(this);
this.abortAllRequest = this.abortAllRequest.bind(this);
}
abortAllRequest() {
this.state.controller.abort();
this.setState({
isLoading: false,
controller: new AbortController(),
});
}
async queryAll(eans) {
if (this.state.isLoading) {
await this.abortAllRequest();
}
const signal = this.state.controller.signal;
const result = await fetch(`/SomUrl/`, {
method: 'get',
signal: signal,
});
}
render() {
return (
<Context.Provider value={{
state: this.state,
queryAll: this.queryAll,
abortAllRequest: this.abortAllRequest,
}}>
{this.props.children}
</Context.Provider>
);
}
}
export default Provider;