Javascript 我如何返回{vW,vH},它实际上返回未定义的?

Javascript 我如何返回{vW,vH},它实际上返回未定义的?,javascript,node.js,arrow-functions,Javascript,Node.js,Arrow Functions,我正在尝试使用ffprobe和exec从*.mp4视频读取元数据,然后解析其json结果,但它返回未定义的 const video_metadata = `ffprobe ".\\video.mp4" -v error -show_entries stream=width,height -of json`; const {vW,vH} = exec(video_metadata, async (err, stdout, stderr) => { if (err) {

我正在尝试使用
ffprobe
exec
从*.mp4视频读取元数据,然后解析其
json
结果,但它返回未定义的

const video_metadata = `ffprobe ".\\video.mp4" -v error -show_entries stream=width,height -of json`;

const {vW,vH} = exec(video_metadata, async (err, stdout, stderr) => {
    if (err) {
        await console.error(`exec error: ${err}`);
        return;
    }
    const j = JSON.parse(stdout);

    return j.streams[0].width, j.streams[0].height;
});

console.log(vW); // Undefined
console.log(vH); // Undefined

更改您的回程线路,如下所示:

return { vW: j.streams[0].width, vH: j.streams[0].height }

您不能等待exec,因为它不会返回承诺。解析后的json值只能在回调中访问。你可以用一个承诺来包装你的执行官,这样你就可以
等待它了
。正如你所说的,我把它想出来并解决了。