为什么我们必须在 react-native 中的 promise 链的末尾调用 .done() ?

Why do we have to call `.done()` at the end of a promise chain in react-native?

react-native tutorial 中说:

Note that we call done() at the end of the promise chain - always make sure to call done() or any errors thrown will get swallowed.

 fetchData: function() {
    fetch(REQUEST_URL)
      .then((response) => response.json())
      .then((responseData) => {
        this.setState({
          movies: responseData.movies,
        });
      })
      .done();
  },

这个空的 .done() 到底是做什么的?

我需要说明的内容:

  • 承诺中遇到的异常(在执行 then() 回调期间)存储为 Error 对象,并且 不会抛出

这种机制意味着您可以推迟操作,而不会有内部异常随机将您搞砸的风险。

  • done() 在没有参数的情况下调用 promise 会查看 promise 以查看是否存在任何存储的异常,并抛出它们。

这意味着您可以在承诺处理结束时处理承诺处理期间的异常。