Показать сообщение отдельно
  #12 (permalink)  
Старый 28.09.2021, 11:46
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Ну если воспользоваться идеями Aetae и Alexandroppolus и попытаться объединить их, то получается такой вариант
function one(callback) {
    setTimeout( function() {
        callback("First");
    }, Math.random() * 1000);
}
 
function two(callback) {
    setTimeout( function() {
        callback("Second");
    }, Math.random() * 500);
}
 
function three(callback) {
    setTimeout( function() {
        callback("Third");
    }, Math.random() * 100);
}
 
function runCallback(s) {
    console.log(s);
}

async function stream(log, ...args) {
    const ap = args.map (func => new Promise(func))
    for (let i = 0; i < args.length; i++) {
        log(await ap[i])       
    }
}
 
stream(runCallback, one, two, three)
Ответить с цитированием