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"
})
}
我有一个我调用的 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"
})
}