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

Gre*_*ade 8 javascript react-native

react-native教程中,它说:

请注意,我们在promise链的末尾调用done() - 始终确保调用done()或者抛出任何抛出的错误.

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

这是什么空的.done()实际上呢?

Gre*_*ade 5

我需要澄清的是:

  • 承诺中遇到的异常(在then()回调执行期间)被存储为一个Error对象,而不是抛出

这种机制意味着您可以推迟操作,而不会出现其中的异常在随机时间弄乱您的风险。

  • done() 在承诺上不带参数调用会查看承诺以查看是否有任何存储的异常,并抛出它们。

这意味着您可以在 Promise 处理期间,在 Promise 处理结束时处理异常。