首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AccessToken从AsyncStorage +请求到axios

AccessToken从AsyncStorage +请求到axios
EN

Stack Overflow用户
提问于 2019-03-10 16:15:14
回答 1查看 497关注 0票数 0

在用function本机编写应用程序时,我遇到了与承诺相关的某些障碍,因此我有一个负责授权请求的函数。

代码语言:javascript
运行
复制
export const authorizeRequest = async () => {
  const token = await deviceStorage.getItem('accessToken');
  return axios.create({
    timeout: 2000,
    headers: {
      'Authorization': 'Bearer ' + token,
      'Content-Type': 'application/json'
    }
  });
};

为了从其中获取数据,我用样式编写了代码。

代码语言:javascript
运行
复制
authorizeRequest().then(a => a.get('http://192.168.0.60:8080/users/echo2/asd')
        .then(response => ToastAndroid.show('Response ' + response.data, ToastAndroid.SHORT))
        .catch(error => ToastAndroid.show('error ' + JSON.stringify(error), ToastAndroid.LONG)))

是否可以避免在调用.then时第一次使用authorizeRequest().then(....),从而使查询看起来像authorizeRequest().get('xxx').then(xxx).catch(xxx),谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-10 20:34:01

当您已经使用promise语法将您的值从设备存储中取出时,为什么要使用async/await语法?

您可以使用async/await重写代码,这样可以更容易地查看代码中正在发生的事情。

代码语言:javascript
运行
复制
export const authorizeRequest = async (url) => {
  try {
    const token = await deviceStorage.getItem('accessToken');
    const a = await axios.create({
      timeout: 2000,
      headers: {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
      }
    });

    const response = a.get(url);
    ToastAndroid.show('Response ' + response.data, ToastAndroid.SHORT);
    // return response.data // <- you could return something here
  } catch (error) {
    ToastAndroid.show('error ' + JSON.stringify(error), ToastAndroid.LONG);
  }
};

以上述方式编写代码意味着可以避免承诺链接。

然后,您可以以下列方式使用它:

代码语言:javascript
运行
复制
await authorizeRequest('http://192.168.0.60:8080/users/echo2/asd')

如果您想从authorizeRequest函数中获得一个值,您只需返回response.data,然后按如下方式访问它:

代码语言:javascript
运行
复制
const data = authorizeRequest('http://192.168.0.60:8080/users/echo2/asd')

下面是一些关于promisesasync/await的优秀文章。

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

https://stackoverflow.com/questions/55089731

复制
相关文章

相似问题

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