а как настроить переход по файлам через функцию по ним?
operator await(jsValue) {
// ждем ближайший микротаск
yield JS_RUNTIME.nextMicroTaskInEventLoop;
// если у jsValue нет метода then
if (typeof jsValue?.then !== 'function') {
// то просто возвращаем его
return jsValue;
}
// внутреннее состояние
let isRejected = false;
let result;
// штука которая позволяет запланировать выполнение в микротаске
const microtaskScheduler = JS_RUNTIME.createMicrotaskScheduler();
// колбэки для then
const resolve = (value) => {
result = value;
microtaskScheduler.schedule();
};
const reject = (value) => {
result = value;
isRejected = true;
microtaskScheduler.schedule();
};
// вызываем метод then
jsValue.then(resolve, reject);
// ждем ближайший микротаск после вызова microtaskScheduler.schedule()
yield microtaskScheduler;
// возвращаем результат
if (isRejected) {
throw result;
} else {
return result;
}
}
(async () => {
console.log(0)
const r = await {
then(onResolve, onRejected) {
console.log(2);
setTimeout(onResolve, 1500, 3);
},
};
console.log(r);
})();
console.log(1);
Name | LastName
, смешенный вариант не подходит в такой тип