Reactjs 如果我有catch(),是否需要在承诺链的末尾调用done()?

Reactjs 如果我有catch(),是否需要在承诺链的末尾调用done()?,reactjs,react-native,Reactjs,React Native,React Native的文档说: 请注意,我们在承诺链的末尾调用done()-始终确保调用done(),否则抛出的任何错误都会被吞没 当我在最后有一个挡块时有必要吗 dataLayer.enter() { .then((responseData) => { console.log('enter responseData ->', responseData); }) .catch(function(error) { console.log('ent

React Native的文档说:

请注意,我们在承诺链的末尾调用done()-始终确保调用done(),否则抛出的任何错误都会被吞没

当我在最后有一个挡块时有必要吗

dataLayer.enter() {
 .then((responseData) => {

      console.log('enter responseData ->', responseData);

 })  
 .catch(function(error) {

    console.log('enter error ->', error)

 });

如果
catch
块没有问题,则无需在链的末尾添加
done()
。在您提供的示例中,应该可以。但是,如果
catch
尝试输出
this.state.foo
的值,则会生成一个可能被吞没的错误。(在我的潜在问题示例中,
this.state.foo
不起作用的原因是您拥有的
catch
函数未绑定到
上下文,并将导致错误。)在承诺链的末尾添加
.done()
是一种良好的形式,并且有一点额外的保障

建议的代码更新:

dataLayer.enter() {
  .then((responseData) => {

    console.log('enter responseData ->', responseData);

  })  
  .catch(error => {

    console.log('enter error ->', error)

  })
  .done();