Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.44.223] |
|
Сообщ.
#1
,
|
|
|
Ку
изучаю промисы, пытаюсь упрощено написать его, я бы сказал очень упрощено const MyPromise = (() => { const _then = Symbol(); return class MyPromise { constructor(func) { func(); } then(func) { this[_then] = func; } }; })(); // test const promise = new MyPromise(resolve => { setTimeout(() => resolve("Ready!"), 2000); //<-- асинхронный вызов resolve }); promise.then(message => console.log(message)); запускаю в консоле хрома выскакивает эксэпшен с указанием что resolve не функция: Uncaught TypeError: resolve is not a function at <anonymous>:19:4 Где подвох? Как вообще организовать такую схему как в промесах, там конечно много еще чего понаписано, меня все не интересует! Меня интересует как вызвать функцию resolve, которую передают позже по коду в then |
Сообщ.
#2
,
|
|
|
сам все порешал
надо просто было передать функцию в func, а я про это вапще забыл const MyPromise = (() => { const _then = Symbol(); return class MyPromise { constructor(func) { func((arg) => this[_then](arg); }); //<-- передаю функцию, в которой вызываю функцию, переданную в метод then! } then(func) { this[_then] = func; } }; })(); // test const promise = new MyPromise(resolve => { setTimeout(() => resolve("Ready!"), 2000); }); promise.then(message => console.log(message)); // Ready! гениально не так ли? |