首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在警告用户和设置状态之前,React Native Await Async不返回值

在警告用户和设置状态之前,React Native Await Async不返回值
EN

Stack Overflow用户
提问于 2019-10-02 02:32:43
回答 2查看 870关注 0票数 0

我使用Axios对twitter API进行HTTPS调用,并返回令牌和tweet:

TwitterScreen.js:

代码语言:javascript
复制
export default class TwitterLogin extends React.Component {
  async componentDidMount(){
      await init("<CUSTOMER KEY>", "<CUSTOMER SECRET KEY>");
      this.twitter =  await getToken();
      alert(this.twitter);
  }
  render() {
      return(
      <View style= {styles.container}>
          <Button
          title="Twitter Login Button" onPress={this.twitter)}
          />
      </View>
     )
  }
}

AxiosUtility.js:

代码语言:javascript
复制
export function init(cuskey, seckey){
    axios.defaults.baseURL = 'https://api.twitter.com';
    //TODO: RFC 1738 this. 
    axios.defaults.headers.common['Authorization'] = 'Basic ' + btoa(cuskey + ':' + seckey);
    axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
    axios.defaults.headers.post['Accept-Encoding'] = 'gzip';
}

export function getToken(){
    axios.post('/oauth2/token', 'grant_type=client_credentials', {
        'User-Agent' : 'whereabouts dev',
        Accept: '*/*',
    })
    .then((response) => {
        console.log(response.data);
        return (response.data);
    })
    .catch((error) =>{
        console.log(error)
    }
    )
} 

当console.log(response.data)运行时,它返回一条成功的消息。但它在向应用程序发送警报消息后运行,这意味着警报消息显示为“未定义”。我按照文档操作,但无济于事。

我还收到一条警告,说"await对此表达式的类型没有影响“。如何正确使用await和async,以便在调用twitter后发出警报?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-02 02:51:46

我认为getToken必须兑现诺言。

代码语言:javascript
复制
export function getToken(){
//do not return void but promise with return
   return axios.post('/oauth2/token', 'grant_type=client_credentials', {
        'User-Agent' : 'whereabouts dev',
        Accept: '*/*',
    }).then((response) => {
        console.log(response.data);
        return (response.data);
    })
    .catch((error) =>{
        console.log(error)
    }
    )
}
票数 2
EN

Stack Overflow用户

发布于 2019-10-02 02:56:31

我最近注意到这一点。await在componentDidMount()上不起作用。建议:在其他函数中进行等待,这应该可以工作。

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

https://stackoverflow.com/questions/58190453

复制
相关文章

相似问题

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