2017-07-16 60 views
1

我在下一個js應用程序中使用節點npm模塊從api獲取數據。來自節點js函數的返回值

static async getInitialProps() { 
    const zxapi = new Zxapi(connectId, secretKey); 
    const res2 = await zxapi.programs({ region: "DE" }, function(err, result) { 
     if (err != null) { 
      return err 
     } 
     console.log(result, "before return"); 
     return result 
     console.log(result, "after return"); 
    }); 
    return { res2 }; 
} 

我需要返回res2的值。 「返回前」console.log將數據記錄到終端並在那裏終止。我究竟做錯了什麼?謝謝

+0

你可以'''的console.log(RES2)'''之前' ''回來{ res2 };'''看看它是否到達那裏? – ifiok

+0

'return result'可能返回數據。 –

+0

@ifiok nope,它不是 – Kofi

回答

3

你能檢查zxapi.programs是否返回Promise?如果沒有,則可能需要創建一個函數,使其返回Promise

例如,你可以使用像

function zxpromise() { 
    return new Promise((resolve, reject) => zxapi.programs({ region: "DE" }, function(err, result) { 
     if (err != null) { 
      reject(err); 
     } 
     console.log(result, "before return"); 
     resolve(result); 
     console.log(result, "after return"); 
    })); 
} 

,然後,你可以調用zxpromise作爲

const res2 = await zxpromise() 
+0

這解決了我的問題!!謝謝!!!!! – Kofi