Mobx 状态树流。如何知道什么时候完成?

Mobx State Tree Flow. How to Know when it's done?

我正在使用 mobx 状态树和 mobx UI 东西。

现在当我将一些东西保存到数据库时,请求完成后我想更新 ui(即我的 mobx 状态)。

我需要知道流程何时结束。

  myFlow: flow(function* () {
          // do stuff here.
    }),

现在我看到返回了一个 promise,所以我想直接做

myFlow.then() 

哪个可行,但我想知道这是 属性 方式还是有其他方式可以做到这一点(async/await?或者 flow 有一些内部的东西?)

一个流 returns 一个承诺,因此任何承诺等待机制都有效:.thenawaityield 在另一个 flow 中。如果你想渲染流的状态,看看mobx-utils包的mobxUtils.fromPromise(promise).case(....)

在生成器内部,您可以在最后调用一些其他操作。

在下面的示例中,我调用了 thisIsWhatYouNeed 函数。当生成器结束时将调用此函数。

myFlow: flow(function* () {        
  try {
    const response = yield fetch('your URL here');
    const data = yield response.json()

    // here you can call another action
    self.thisIsWhatYouNeed(data);

  } catch (error) {
    console.log('error happens');
  }
})

thisIsWhatYouNeed(data) {
  // here you have your data and know that flow is finished
  console.log('generator already finished');
}