Javascript 在返回所有承诺的价值之前,我如何等待所有承诺得到解决?

Javascript 在返回所有承诺的价值之前,我如何等待所有承诺得到解决?,javascript,promise,bluebird,Javascript,Promise,Bluebird,我正在使用蓝鸟的Promise.map。我正在尝试等待所有承诺得到解决,然后再调度包含对象数组的事件 readFiles(){ const fileArray=Array.from(this.fileSelectInput.files) 常量承诺=[] window.Promise.map(文件数组,(文件,索引)=>{ 返回window.jsmediatags.read(文件{ onSuccess:tag=>{ 承诺,推动({ id:索引+1, 标题:tag.tags.title | |未定

我正在使用蓝鸟的
Promise.map
。我正在尝试等待所有承诺得到解决,然后再调度包含对象数组的事件

readFiles(){
const fileArray=Array.from(this.fileSelectInput.files)
常量承诺=[]
window.Promise.map(文件数组,(文件,索引)=>{
返回window.jsmediatags.read(文件{
onSuccess:tag=>{
承诺,推动({
id:索引+1,
标题:tag.tags.title | |未定义,
艺术家:tag.tags.artist | |未定义
})
承诺.排序((a,b)=>a.id-b.id)
console.log('我应该是第一个')
}
})
}).然后(()=>{
console.log('我应该是第二个')
此.dispatchEvent(新CustomEvent('tracks-selected'){
细节:承诺
}))
}

}
您可能正在寻找

const fileArray = Array.from(this.fileSelectInput.files);

window.Promise.map(fileArray, file => {
  return new Promise((resolve, reject) => {
    window.jsmediatags.read(file, {
      onSuccess: resolve,
      // also pass reject as an error handler if jsmediatags supports that
    });
  });
}).then(tags => {
  const results = tags.map(tag => ({
    id: index + 1,
    title: tag.tags.title || undefined,
    artist: tag.tags.artist || undefined
  }));
  // results.sort((a, b) => a.id - b.id) - not necessary given .map() keeps the order
  this.dispatchEvent(new CustomEvent('tracks-selected', {
    detail: results
  }))
});

window.jsmediatags.read
是否返回承诺?如果不是,那么就没有等待的承诺使用
Promise.map
时不应该存储
承诺数组。应该从回调中为每个迭代结果返回承诺。就是这样。我忘了向Promise.map返回新承诺