Сообщение от voraa
|
Я считаю предыдущие решения некорректными, т.к. при вызове функций используется другой callback. Не сам runCallback
|
то есть вместо патча runCallback сделать патч console.log - это будет честнее?
имхо, раз уж runCallback и callback у функций не склеены изначально, то между ними и надо втыкать "мидлвар".
А в целом задача решается в одну строку, если не городить велосипеды:
// ----- условие --------------
function one(callback) {
setTimeout( function() {
callback("First");
}, Math.random() * 100);
}
function two(callback) {
setTimeout( function() {
callback("Second");
}, Math.random() * 100);
}
function three(callback) {
setTimeout( function() {
callback("Third");
}, Math.random() * 100);
}
function runCallback(s) {
console.log(s);
}
// ----- решение --------------
Promise.all([one, two, three].map(f => new Promise(f))).then(r => r.forEach(runCallback));