@artekha

Как написать promise самому?

Здравствуйте, стоит задача написать свой Promise. Нужно лишь сделать возможность чейнить запросы как в промисах, ловлю ошибок делать не нужно(catch). Если предоставите просто материалы для напутствия о том как промисы работают изнутри, или сразу как реализовать их - огромное спасибо.
  • Вопрос задан
  • 7264 просмотра
Пригласить эксперта
Ответы на вопрос 3
Я думаю, вот этого должно хватить https://www.promisejs.org/implementing/
Правда после чтения, даже если вы напишете промис, это уже будет не совсем своя версия.
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Что значит самому написать?

Нативная "функция" же.
caniuse.com/#feat=promises
https://developer.mozilla.org/en/docs/Web/JavaScri...

пс
А реализаций хватает, любую посмотреть можно.
В чем смысл велосипеда такого только непонятно.
Ответ написан
@Roman_Bednyakov
const deferred = function() {
this.allFunc = [];
this.lastResult;
}
deferred.prototype.then = function (newFunc) {
this.allFunc.push(newFunc);
}
deferred.prototype.resolve = function (arg) {
this.lastResult = arg;
for(let i = 0; i < this.allFunc.length; i++) {
const item = this.allFunc[i];
const res = item(this.lastResult);
if (res instanceof deferred) {
const lastFuncs = this.allFunc.slice(i+1);
res.allFunc = lastFuncs;
break;
} else {
this.lastResult = res;
}
}
}

const d = new deferred();

d.then(function(res){
console.log('1', res);
var d1 = new deferred();
setTimeout(function(){ d1.resolve("a"); }, 3000);
return d1;
});

d.then(function(res){ console.log("2 ", res); return "b"; });
d.then(function(res){ console.log("3 ", res); return "c"; });
d.resolve("hello");
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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