我可以举一个如何取消MobX流的示例吗?

时间:2019-07-19 15:43:41

标签: reactjs mobx mobx-react

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的示例,那就太好了。

1 个答案:

答案 0 :(得分:0)

这似乎可行

this._fetchRawEguide = this.props.combinedEguide.fetchRawEguide(null, true);
    this._fetchRawEguide.then(() => {
      this._fetchRawEguide = null;
      this.setState({   
        loaded: true
      });
    });

我认为将.then应用于流返回的promise可能会强制转换它并删除.cancel函数