从Asyncstorage Axios请求的访问



在我遇到了与承诺相关的一定障碍的反应中编写应用程序时,我有一个负责授权请求的函数

export const authorizeRequest = async () => {
  const token = await deviceStorage.getItem('accessToken');
  return axios.create({
    timeout: 2000,
    headers: {
      'Authorization': 'Bearer ' + token,
      'Content-Type': 'application/json'
    }
  });
};

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

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)))

可以避免调用authorizeRequest().then(....)时首次使用.then,以使查询看起来像authorizeRequest().get('xxx').then(xxx).catch(xxx)谢谢!

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

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

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);
  }
};

以上述方式编写代码意味着您可以避免保证链接。

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

await authorizeRequest('http://192.168.0.60:8080/users/echo2/asd')

如果您想从authorizeRequest函数中获得一个值,则可以返回响应。DATA,您会这样访问它:

const data = authorizeRequest('http://192.168.0.60:8080/users/echo2/asd')

这是promisesasync/await的一些很棒的文章。

  • https://medium.com/@bluepnume/learn-about-promises-before-you-start-using-sasync-await-eb148164a9c8
  • https://hackernoon.com/6-reasons-why-javascripts-sasync-await-blows-promises-away-way-tutorial-c7ec10518dd9

相关内容

  • 没有找到相关文章

最新更新