Javascript 从节点js函数返回值
我正在下一个js应用程序中使用节点npm模块从api获取数据Javascript 从节点js函数返回值,javascript,node.js,next,Javascript,Node.js,Next,我正在下一个js应用程序中使用节点npm模块从api获取数据 static async getInitialProps() { const zxapi = new Zxapi(connectId, secretKey); const res2 = await zxapi.programs({ region: "DE" }, function(err, result) { if (err != null) { return err
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
的值。“返回前”控制台.log将数据记录到终端并在终端终止。我做错了什么?谢谢您能检查一下zxapi.programs
是否返回了一个承诺
?如果没有,您可能必须创建一个函数,使其返回一个承诺
例如,您可以使用
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()
你能在返回{res2}之前
console.log(res2)
并查看它是否到达那里?返回结果
可能正在返回数据。@如果确定否,则返回结果doesnt@AbdullahKhan它不是:(iv checkedawait
仅适用于返回承诺的函数。zxapi.programs()
似乎不会返回承诺(因为您使用的是普通回调,而不是承诺)。有关从异步函数返回值的选项的讨论,请参阅以下非常流行的答案: