2017-07-16 59 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