1

我正在尝试从通话中获取价值localforageaxios但它不起作用。

axios.get('https://api.example.org/api/?uname=' + this.$getItem('LSuname'), {
  withCredentials: true,
  headers: {'Authorization': 'Bearer ' + this.$getItem('LSmytoken')}
})

我在控制台中收到 403 错误:

XHR 加载失败:获取“ https://api.example.org/api/?uname=[object%20Promise] ”。

我也尝试过this.$getItem('LSuname').then(value => { return value })this.$getItem('LSuname').then(function (value) { return value })但我得到了相同的 403 和错误的 url,最后有一个承诺

我能够正确地返回值而不会在我的 vue 的其他地方出现问题,如下所示:

this.$getItem('LSuname').then(value => {
  console.log('uname:' + value)
})
4

1 回答 1

1

看起来this.$getItem是一个异步调用,它将返回一个Promise. 这意味着您必须等待该调用完成,然后才能调用任何取决于这些异步调用的返回值的代码。

在您的情况下,您可以Promise.all()在调用之前等待所有异步调用返回axios.get

let unamePromise = this.$getItem('LSuname');
let mytokenPromise = this.$getItem('LSmytoken');

Promise.all([unamePromise, mytokenPromise]).then((vals) => {
  axios.get('https://api.example.org/api/?uname=' + vals[0], {
    withCredentials: true,
    headers: {'Authorization': 'Bearer ' + vals[1] }
  })
})
于 2017-08-14T15:21:43.003 回答