Решить задачу про асинхроность
Задача про асинхроность
Есть такой класс 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мс. Вопрос как? Я не понимаю, что только не пробовал.