Решить задачу про асинхроность

Задача про асинхроность

Есть такой класс asyncArray

const _async = (fn, cb) => {
    setTimeout(() => cb(fn()), 100);
};

const asyncArray = function(a = []) {
    if(!new.target) {
        return new asyncArray(a);
    }

    this._read = (index, cb) => 
        _async(() => a[index], cb);
    
    this._size = (cb) => {
        _async(() => a.lenght, cb);
    }
        
};

Нужно привести asyncArray к обычному линейному массив. В asyncArray могут встречаться как числа, так и asyncArray, так же значения приходят через какой-то промежуток времени.

const asArray = asyncArray([1, 2, 
                            asyncArray([3, 4]),
                            5]);
const result = solve(asArray);
//result: [1, 2, 3, 4, 5]

Функция solve() что-то сделает с asArray. Как понять что значения пришли если read или size вызываются через какой-то интервал, он может быть случайным. В примере 100мс. Вопрос как? Я не понимаю, что только не пробовал.


Ответы (0 шт):