Javascript 从节点js函数返回值

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

我正在下一个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
        }
        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 checked
await
仅适用于返回承诺的函数。
zxapi.programs()
似乎不会返回承诺(因为您使用的是普通回调,而不是承诺)。有关从异步函数返回值的选项的讨论,请参阅以下非常流行的答案: