我有一个使用spawn并调用ffmpeg
来修剪文件的函数,该函数返回Promise。我需要将音频文件修剪成多个部分,所以我用for循环进行迭代以启动修剪功能,我只需要在for循环中完成修剪过程(生成修剪的文件)即可(因此我不需要来使用await),但仍然需要确保修整功能没有返回错误。
for (let i = 0; i < myArray.length; i++) {
trim().catch(console.error); //<--- Trim asynchronously
linkedList.insertAtEnd(i);
}
我的问题是异步运行for循环修剪音频的好方法是什么?
编辑:我不希望trim()
函数完成以迭代数组中的下一个元素。
编辑:我的问题和this之间的区别是我不希望for循环等待trim()
函数才能继续到数组中的下一个元素。 / p>
答案 0 :(得分:0)
要知道是否存在任何错误,您需要在某个时候进行处理,并且,即使您不想在下一次迭代之前等待每个错误,也需要知道它们何时全部完成循环。
为此,可以将每个promise存储到一个数组中(或使用.map
)。然后,您可以在每次Promise.all
的调用完成后trim
来触发代码。
我添加了trim
和myArray
的定义,并注释了insertAtEnd
的“可运行”示例(尽管插入的链表不依赖于{{ 1}}毫无意义,trim
也不从循环本身获取任何变体。
trim