a
STOP - это как встроенная монада, не требующая выделенного апи и работающая более прозрачно
Size: a a a
a
a
ДК
a
a
a
a
a
a
ДК
a
ДК
a
a
const plusOne = (v) => v + 1;
function* g() {
let v = 0;
while (v < 1000) {
v = yield [plusOne, v];
}
return [() => {}, v];
}
async function a() {
let v = 0;
while (v < 1000) {
v = await callA([plusOne, v]);
}
await callA([() => {}, v]);
}
function callG(g) {
const it = g();
let {
value: [fn, arg],
done,
} = it.next();
while (!done)
({
value: [fn, arg],
done,
} = it.next(fn(arg)));
}
async function callA([fn, arg]) {
return fn(arg);
}
let i = 0;
while (i++ < 1000) {
callG(g); //?.
await a(); //?.
}
a
a
a
a
const plusOne = (v) => v + Math.random() * Math.random();
a
a