javascript - 如何从 async 数组中获取最终结果?
问题描述
get-video-duration是一个获取视频时长的 npm 模块。
const { getVideoDurationInSeconds } = require('get-video-duration')
// From a local path...
getVideoDurationInSeconds('video.mov').then((duration) => {
console.log(duration)
})
我想使用此模块从视频路径数组中获取所有视频的总持续时间。
function getTotals(video_Array) {
let total_duration = 0;
video_Array.forEach(video => {
getVideoDurationInSeconds(video).then(duration => {
total_duration += duration;
})
})
}
事情是getVideoDurationInSeconds
异步的,我不能简单地返回结果。
function getTotals(video_Array) {
let total_duration = 0;
video_Array.forEach(video => {
getVideoDurationInSeconds(video).then(duration => {
total_duration += duration;
})
})
return total_duration;
}
我怎样才能得到最终结果?先感谢您!
解决方案
创建一个返回承诺的函数,然后使用它来计算总持续时间
function getTotals(video_Array) {
let video_ArrayPromises=video_Array.map(video=>
getVideoDurationInSeconds(video));
return Promise.all([video_ArrayPromises]).then((values) => {
//Calculate TotalDuration
return duratons.reduce((accumulator, currentValue) => accumulator + currentValue);
});
}
getTotals(['movie1.mov','movie2.mov']).then(totalDuration => {
//use total duration
});
推荐阅读
- jmeter - Jmeter - 比较/断言多个数据:来自 JSON 的数据与来自 DB 的数据
- amazon-web-services - SQS 队列的弹性
- javascript - 如何在 node.js 中为对象创建异常
- c# - Unity - 多个 Dropdown 组件的一个 Dropdown 回调
- javascript - 从接口获取类型并删除数组
- python - 为什么下面的 python 代码会给出 -5 作为结果
- javascript - getElementsByClassName 但只操作我想要的那个
- c# - 样式事件设置器找不到问题所在
- bash - Bash 变量扩展和用户输入
- ios - 以 CAShapeLayer 的形式分配按钮的形状