следующий код выводит (1), затем (3) что неправильно .. почему?
следующий код предназначен для ожидания 3 секунд и распечатать (3), затем подождать еще 1 секунду, затем распечатать (1)
поэтому правильный порядок должен быть (3), затем (1)
Я думаю, проблема в том, что wait () возвращает новое обещание, но как я могу исправить эту проблему?
примечание: все функции должны возвращать 'this' для создания цепочки
class test extends Promise {
constructor(fn) {
super(fn)
return this
}
wait(seconds) {
return new test(resolve =>
setTimeout(function() {
resolve(seconds)
}, seconds * 1000)
)
}
done(fn) {
return super.then(fn)
}
}
p = new test(r => r())
p.wait(3) //(2) must be before (1)
.done(x => console.log(x))
.wait(1)
.done(x => console.log(x))