好的,完全公开我是一个业余编码员,所以我知道我的知识存在差距。但是,我为此尝试了各种解决方案,但一直无法得到有效的答案。
想要的结果
我调用我的 Express 服务器,它从外部 API 获取数据并在检索到数据后呈现。
问题
无论我如何布置 async/await
模式,我似乎都无法让 Express 等待。目前我的代码如下:
Express.js
app.get('/getInventory', async (req, res) => {
try {
let inventory = await api.getInventory(req.query.id)
console.log(inventory)
res.json(inventory)
}
catch(err) {
console.log(err)
}
})
我的 api.js
目前是这样的:
exports.getInventory = async function(id){
let data = await manager.getInventoryContents(id, 570, 2, true, (err, inventory) => {
if (err) {
console.log(err)
Promise.reject(err)
}
else {
console.log('Success')
Promise.resolve(inventory)
}
})
return data
}
如果您想知道我有 console.log()
操作只是为了尝试查看发生的事情。
到目前为止我得到了什么
几乎每一种变化,我都将 Express.js
库存作为 undefined
(同样没有数据发送到客户端),但是我收到了 Success
消息(甚至库存本身)来自 api.js
。
我猜一旦我完成它,正确的语法是显而易见的,但我似乎无法让它正常运行。我错过了什么?
答案 0 :(得分:0)
试试这个:
exports.getInventory = async function(id){
return new Promise((resolve, reject) => {
manager.getInventoryContents(id, 570, 2, true, (err, inventory) => {
if (err) {
console.log(err);
reject(err);
}
else {
console.log('Success');
resolve(inventory);
}
}
}
}