@pqgg7nwkd4

Как правильно унаследоваться от Promise?

Добрый день.

class MyPromise extends Promise {
	constructor(executor) {
		let cp = function (ok, fail) {
			// ничего не делаем, как-будто что-то дооолго грузим
		};
		super(cp);
	}
}

let p = new MyPromise(function (ok, fail) {  });

p.then(function () { });

В последней строчке возникает ошибка:
- В хроме: "Uncaught TypeError: Promise resolve or reject function is not callable"
- В фаерфоксе: "TypeError: A Promise subclass passed a non-callable value as the resolve function."

Вопрос: почему и как правильно сделать?
  • Вопрос задан
  • 351 просмотр
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
А зачем?

const p = new Promise((ok, fail) => {
    setTimeout(ok, 1000 * 3600)
});
Ответ написан
Комментировать
@vshvydky
я вот не понимаю , прошого вопроса с ответами не хватило что ли, теперь конкретно о твоем шедевре
ты передаешь в конструктор function (ok, fail) { } - он линкуется переменной executor
Далее ты передаешь в конструктор родительского класса функцию с 2 переменными, ok и fail, кстати их принято называть resolve , reject , ну да ладно. И что в этих двух переменных? Верно в них undefined.
Я все еще бьюсь одним вопросом, зачем ты занят этой ерундой? что пытаешься получить?
Я в прошлом оттвете показал тебе как объявить промис, но не вызывать его исполнение. Тебе этого было недостаточно? Решил мопед собирать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы