我有一个明确的端点,我称之为具有承诺的函数:
Express Server:
// 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和this但没有运气;我一直收到一个空对象。
使用axios,在返回任何数据之前,我怎么能等到承诺完成?
答案 0 :(得分:2)
您的问题是如何处理服务器中的Promise,而不是axios中的Promise。服务器代码没有等待Promise解决,只是在此之前返回json。所以你能做的就是回报诺言并等待它。
// 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"
})
}