首页 > 解决方案 > 如何解决承诺?

问题描述

我使用本机反应开发应用程序,并在backend.js:32 Possible Unhandled Promise Rejection (id: 0):出现错误时在控制台中发出警告。

我有 2 个组件。这是来自父组件Sms-Registration.js的代码片段

signInWithPhoneNumber = (phone) => {
    return new Promise((resolve, reject) => {
        return (
          // this function authenticate user in firebase
          auth()
            .signInWithPhoneNumber(phone)
            .then((confirmResult) => {
              this.setState({
                formSubmitted: false,
              });
              this.getSignInResult(confirmResult, phone);
              return resolve();
            })
            .catch((error) => {
              throw error;
            })
        );
      });
  };

render() {
    return (
      <PhoneNumber
            signInWithPhoneNumber={this.signInWithPhoneNumber}
          />
    );
  }

这是PhoneNumber.js代码片段

signInWithPhoneNumber = () => {
    this.props
      .signInWithPhoneNumber(
        `${this.state.countryObj.dial_code}${this.state.phoneNumber}`,
      )
      .then((result) => console.log('new result', result))
      .catch((error) => console.log('new error', error));
  };

有人可以帮我解决这个承诺吗?

标签: javascriptreact-native

解决方案


您需要处理拒绝,这意味着您必须在您的 catch 块中调用 reject() ,如果一切顺利,您必须以调用 resolve 的相同方式调用


推荐阅读