Я уже искал похожие вопросы, но они связаны с JQuery или любой другой библиотекой.
Сначала я написал это:
const printIn1Sec = (value) => {
return new Promise(resolve => {
setTimeout(() => {
console.log(value);
resolve();
}, 1000)
});
};
И использовал его следующим образом:
printIn1Sec(1)
.then(() => printIn1Sec(2))
.then(() => printIn1Sec(3));
Я думаю then
очень важно, потому что оно позволяет нам выполнить что-то, как только обещание будет выполнено.
Но я искал что-то вроде этого:
printIn1Sec(1)
.printIn1Sec(2)
.printIn1Sec(3);
Я заметил, что мне нужен объект с доступом к этому printIn1Sec
методу.Итак, я определил класс:
class Printer extends Promise {
in1Sec(v) {
return this.then(() => this.getPromise(v));
}
getPromise(value) {
return new Printer(resolve => {
setTimeout(() => {
console.log(value);
resolve();
}, 1000)
})
}
}
И использовал его следующим образом:
Printer.resolve().in1Sec(1).in1Sec(2).in1Sec(3);
Мне пришлось resolve
Обещание с самого начала, чтобы начать цепочку.Но это все еще беспокоит меня.
Как вы думаете, есть ли способ заставить его работать следующим образом?
printIn1Sec(1).printIn1Sec(2).printIn1Sec(3);
Я думал о новом классе или методе, который мог бы получить эти значения, сохранить их,и, наконец, начать решать цепочку.Но для этого потребуется в конце вызвать дополнительный метод, чтобы инициировать поток.