Общий Callback для нескольких async функций

236
20 июля 2017, 01:26

Как лучше сделать если нужно запустить несколько асинхронных функций (их может быть от одной до десятка) и собрать их ответы в один JSON, сами функции делают обращение в сеть и возвращают JSON'ы, желательно отлавливать часть функций которые вывалились с ошибками но при этом возвращать JSON'ы тех что отработали корректно. ps: deassync и подобное не предлагать, хотелось бы сделать это в асинхронном стиле.

Answer 1

Promise.all

const array=[1,2,3,4,5]; 
const getJSON = (n, cb) => { 
  setTimeout(() => { 
    if(Math.random()>.5){ 
      cb('example error'); 
    }else{ 
      cb(null,{[n]:'example result'});	 
    } 
  }, Math.random()*1111) 
} 
 
const promises =[]; 
for(var i in array){ 
  promises.push(new Promise((resolve,reject) =>  
    getJSON(array[i],(err,res) => { 
      if(err){ 
        // Обрабатываем ошибку 
        console.error(err); 
      } 
      resolve(res || err); 
    }) 
  )) 
} 
Promise.all(promises).then(result => { 
  console.log(result); 
}).catch(err =>{ 
  console.error(err); 
});

READ ALSO
Как скопировать в буфер скрытый текст?

Как скопировать в буфер скрытый текст?

на странице реализовано копирование в буфер:

289
Заставить работать javascript в slim - шаблоне

Заставить работать javascript в slim - шаблоне

Сообственно, инструкция по установке фрейма (судя по синтаксису, скорее всего на пхп):

280
Как упростить и сделать без Object.keys?

Как упростить и сделать без Object.keys?

Можно ли данный код как-то упростить и оптимизировать?

339