首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么援用成功的承诺?

为什么援用成功的承诺?
EN

Stack Overflow用户
提问于 2020-02-12 18:00:53
回答 2查看 83关注 0票数 0

我可能会有奇怪的事情发生--我向端点"/Login“发送了一个请求,它给了我很好的响应!

我做我的事,但出于某种原因,我看到一个警告说,

未处理的承诺拒绝/ typeError:未定义不是对象(计算'error.response.data')

如果有人能解释的话?

代码段

代码语言:javascript
复制
signIn = data => {
    this.setState({loading: true});
    API.post('/login', data)
      .then(response => {
        let {
          data: {
            data: {
              response: {token},
            },
          },
        } = response;
        this.setState({loading: false});
        reactotron.log('response', response);
        reactotron.log(token);
        deviceStorage.saveKey('id_token', token);
      })
      .catch(error => {
        alert('catched!!'); // it's appear :)
        this.setState({error: error.response.data, loading: false});
        reactotron.error(error.response.data);
      });
  };

=这个函数~_~是错误的!

为什么让我出错?

_deviceStorage.default.saveKey is not a function

代码语言:javascript
复制
import { AsyncStorage } from '@react-native-community/async-storage';
import reactotron from 'reactotron-react-native';

const deviceStorage = {
  // our AsyncStorage functions will go here :)
  saveItem= async(key, value)=>{
    try {
      await AsyncStorage.setItem(key, value);
    } catch (error) {
      reactotron.log('AsyncStorage Error: ' + error.message);
    }
  }
};

export default deviceStorage;
EN

回答 2

Stack Overflow用户

发布于 2020-02-12 18:09:47

error是错误消息(拒绝消息)的字符串表示形式。但是当你说error.response.data的时候,你把它当作是一个对象

代码语言:javascript
复制
  .catch(error => {
    alert('catched!!'); // it's appear :)
    this.setState({error: error, loading: false});
    reactotron.error(error.response.data);
  });
票数 3
EN

Stack Overflow用户

发布于 2020-02-12 18:21:27

如果在“然后”块中遇到错误,则可以调用捕获。检查您的然后块是否有任何可能的错误。这可能就是为什么即使承诺返回成功时也调用catch的原因。

代码语言:javascript
复制
const promise1 = new Promise(function(resolve, reject) {
  resolve("resp");
});

promise1.then(function(resp) {
  console.log(resp);
  throw 'error'
}).catch(function(error) {
  console.error(error);
});

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60194471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档