簡體   English   中英

在 API 調用完成之前快速解析路由

[英]Express resolving route before API call completes

好的,完全披露我是一個業余愛好者,所以我知道我的知識存在差距。 但是,我為此嘗試了各種解決方案,但一直無法得到有效的答案。

期望的結果

我調用我的 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 (類似地沒有數據發送到客戶端),但是我從api.js收到Success消息(甚至庫存本身)。

我猜一旦我完成它,正確的語法是顯而易見的,但我似乎無法正確地將它傳遞給 function。 我錯過了什么?

嘗試這個:

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);
         }
      }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM