Подскажите правильно ли организован псевдо код? И будут ли утечки памяти при setInteraval или сборщик будет вовремя все очищать и ничего не засорится?
По всевдо задаче нужно отправлять новые блоки каждую минуту на сервер. В методе create блоки могут возвращаться каждый раз разные.
class Block {
constructor(color) {
this._currentBlock = null;
this.color = color || '';
}
current() {
return this._currentBlock;
};
create() {
return new Promise((resolve, reject) => {
setTimeout(() => {
this._currentBlock = {type: 'Brick', color: this.color};
return resolve(this._currentBlock);
},0);
});
};
prepareForSend(block) {
return block.color = block.color.toUpperCase();
};
send(block) {
fetch('http://test.com', {
method: 'POST',
body: JSON.stringify(block),
})
.catch(console.log)
}
init() {
setInterval(() => {
const block = new Block();
block.create().then(r => {
const preparedBlock = block.prepareForSend(block.current());
block.send(preparedBlock);
});
}, 10000);
}
}
const block = new Block();
block.init();
Обновленный вариант класса
class Block {
constructor(color) {
this.color = color || '';
}
create() {
return new Promise((resolve, reject) => {
setTimeout(() => {
return resolve({type: 'Brick', color: this.color});
},0);
});
};
prepareForSend(block) {
return block.color = block.color.toUpperCase();
};
initSending() {
setInterval(() => {
this.create().then(block => {
const preparedBlock = this.prepareForSend(block);
send(preparedBlock);
});
}, 10000);
}
}
function send(block) {
fetch('http://test.com', {
method: 'POST',
body: JSON.stringify(block),
})
.catch(console.log)
}
const block = new Block();
block.initSending();