const deferred = () => {
Promise.prototype.resolve = () => {}; // чтобы не было ошибок )
return Promise.resolve("web");
}
«Нормальное» решение:
// проверка
deferred()
.then(function(res) {
console.log(200, res);
return "lab";
})
.then(function(res) {
console.log(100, res);
})
.resolve("web");
// реализация
function deferred() {
function Box() {
this.queue = [];
}
Box.prototype.then = function(func) {
this.queue.push(func);
return this;
}
Box.prototype.resolve = function(first_arg) {
let arg = first_arg;
while (this.queue.length)
arg = this.queue.shift().call(this, arg);
}
return new Box;
}