Axios 在返回数据之前等待端点承诺

Axios wait on endpoint promise before returning data

我有一个我调用的 express 端点,它有一个函数,里面有一个承诺:

快递服务器:

// endpoint
app.get('/test', function (req, res) {
  res.setHeader('Content-Type', 'application/json')
  let y = 1
  let x = 1
  let bar = foo(x, y)
  res.json({a: bar})
}

const foo = (x, y) => {
  // The promise
  sue.young(y, function(error, output) {
   // do stuff with x and output
   // console.log(output.result) // expected data in console
   // I need to return "output.result"
  })
}

查看:

let axiosClient = axios.create()
axiosClient.interceptors.request.use(async (config) => {
  return new Promise((resolve) => {
    axios.get('/test')
  }).then(res => {
    console.log(res)
  })
    .catch(e => {
      console.log(e)
    })
})

axiosClient.get('/test')
  .then(res => {
    console.log(res)
  })
  .catch(e => {
    console.log(e)
  })

我尝试复制 this and this 但没有成功;我一直收到一个空对象。

使用 axios,我如何才能等到 promise 完成后再返回任何数据?

你的问题是你如何在服务器中处理 Promise,而不是在 axios 中。服务器代码不等待 Promise 解析,只是在此之前 returning json。所以你能做的就是return承诺并等待它。

// endpoint
app.get('/test', function (req, res) {
    res.setHeader('Content-Type', 'application/json')
    let y = 1
    let x = 1
    foo(x, y).then(bar => {
        res.json({a: bar});
    });
}

const foo = (x, y) => {
    // The promise
    return sue.young(y, function(error, output) {
        // do stuff with x and output
        // console.log(output.result) // expected data in console
        // I need to return "output.result"
    })
}