Задать вопрос
@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."

Вопрос: почему и как правильно сделать?
  • Вопрос задан
  • 357 просмотров
Подписаться 3 Оценить Комментировать
Ответ пользователя Виталий К ответам на вопрос (2)
@vshvydky
я вот не понимаю , прошого вопроса с ответами не хватило что ли, теперь конкретно о твоем шедевре
ты передаешь в конструктор function (ok, fail) { } - он линкуется переменной executor
Далее ты передаешь в конструктор родительского класса функцию с 2 переменными, ok и fail, кстати их принято называть resolve , reject , ну да ладно. И что в этих двух переменных? Верно в них undefined.
Я все еще бьюсь одним вопросом, зачем ты занят этой ерундой? что пытаешься получить?
Я в прошлом оттвете показал тебе как объявить промис, но не вызывать его исполнение. Тебе этого было недостаточно? Решил мопед собирать?
Ответ написан