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值只能在回调中访问。你可以用一个承诺来包装你的执行官,这样你就可以
等待它了
。正如你所说的,我把它想出来并解决了。