Mobx官方文档指出,您可以对流程返回的诺言调用cancel。 https://mobx.js.org/best/actions.html上没有任何示例。
上下文: 在componentDidMount中调用异步操作,我们需要在componentWillUnmount中取消此操作。还要setState说ui可以在承诺解决后呈现。
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的示例,那就太好了。
答案 0 :(得分:0)
这似乎可行
this._fetchRawEguide = this.props.combinedEguide.fetchRawEguide(null, true);
this._fetchRawEguide.then(() => {
this._fetchRawEguide = null;
this.setState({
loaded: true
});
});
我认为将.then应用于流返回的promise可能会强制转换它并删除.cancel函数