Я пытаюсь реализовать функцию, использующую promise
, которая сначала ждет, а затем записывает некоторые строки, первое, что приходит на ум, это clearTimeout
, когда я думаю о setTimeout
, функция делает то, что я намереваюсь. Мой вопрос заключается в том, есть ли утечки памяти в созданном первоначальном обещании, которое когда-либо ожидалось, так как я очищаю timeId, поэтому он никогда не будет установлен.
Извините за мой плохой Engli sh и грязный код.
// Goodman
function Goodman(sbd) {
let timeId
let promise = new Promise(resolve => {
timeId = setTimeout(() => resolve(console.log('I am ' + sbd)), 0)
})
let rest = function(ms) {
this.promise.then(() => new Promise(resolve => setTimeout(resolve, ms)))
return this
}
let learn = function(sth) {
this.promise.then(() => console.log('Learning ' + sth))
return this
}
let restFirst = function(ms) {
clearTimeout(this.timeId)
this.promise = new Promise(resolve => {
this.timeId = setTimeout(resolve, ms)
}).then(() => console.log('I am ' + sbd))
return this
}
return {
timeId,
promise,
rest,
learn,
restFirst
}
}
// Initially wait 5 seconds
// "I am Tom"
// "Learning chinese"
Goodman('Tom')
.restFirst(5000)
.learn('chinese')