gpt4 book ai didi

javascript - 异步 Javascript 函数返回未定义

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:57 24 4
gpt4 key购买 nike

我正在尝试运行此函数,但当我显式硬编码返回值时,它始终返回未定义。

const splitVideo = async (sid, video, part) => {
let framesLocation =`${process.cwd()}/${dirs.videoFrames}/${sid}_${part}`;

console.log(fs.existsSync(framesLocation));

if(!fs.existsSync(framesLocation)) {
console.log("making dir");
f.s.mkdirSync(framesLocation);
}

ffmpeg(video)
.on('end', () => {
return "done";
})
.on('error', (err) => {
throw err;
})
.screenshots({
timestamps: [1,2],
filename: `${sid}_${part}/frame-%s.png`,
folder: `${process.cwd()}/${dirs.videoFrames}`
});
};

请帮忙,这非常令人沮丧。

最佳答案

您的函数不返回任何内容,这就是为什么您得到未定义。将 ffmpeg 调用包装在 new Promise(...) 中,以便能够解析其异步结果:

const splitVideo = async (sid, video, part) => {
// ...

return new Promise((resolve, reject) => {
ffmpeg(video)
.on('end', () => {
resolve("done");
})
.on('error', (err) => {
reject(err);
})
.screenshots({
timestamps: [1,2],
filename: `${sid}_${part}/frame-%s.png`,
folder: `${process.cwd()}/${dirs.videoFrames}`
});
};
};

const ret = await splitVideo(...);
console.log(ret);

另请注意,您需要 await 此函数才能读取结果(或在 then 处理程序中获取结果)。

关于javascript - 异步 Javascript 函数返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49802182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com