Я только начал изучать объектно-ориентированный Javascript, и мне нужна помощь, чтобы выяснить, как отменить / остановить выполнение функции через другую функцию.Я строю (на самом деле не строю, просто практикую) class Music
с конструктором, содержащим несколько параметров, и в основном я хочу проигрывать и приостанавливать музыку, когда захочу.
Я думал сделать ее немного интересной, еслия мог бы посчитать секунды в момент, когда я проигрываю песню, и если я достигну количества секунд, в течение которых песня длится, чтобы остановить / приостановить счетчик и продолжить воспроизведение позже, когда я остановился.
Проблема, которую яу меня есть, я хочу приостановить счетчик, но кажется, что счетчик продолжает выполняться.
У меня есть две функции в моем объекте класса.Функции play()
и pause()
.Сначала я выполняю функцию play()
, а перед тем, как "музыка" заканчивается, я выполняю pause()
, который должен остановить счетчик.
Я попытался добавить в конструктор патаметр: this.isPlaying = false
и когдаplay()
работает this.isPlaying
становится true
, и если я бегу pause()
this.isPlaying
снова становится false
, останавливает счетчик и дает мне количество секунд, которое он посчитал.
Я получаюсекунд назад, когда я запускаю pause()
, но функция play()
все еще работает независимо от
class Music {
constructor(title, uploader, seconds, isPlaying, startTime) {
this.title = title;
this.uploader = uploader;
this.seconds = seconds;
this.isPlaying = false;
this.startTime = 0;
}
play() {
if (!this.isPlaying && this.startTime == 0) {
this.isPlaying = true;
console.log('The song: ' + this.title + ' Started');
var startSong = setInterval(() => {
this.startTime++;
if (this.startTime == this.seconds) {
this.isPlaying = false;
clearInterval(startSong);
console.log("song ended");
}
}, 1000);
} else {
console.log(this.startTime);
return;
}
}
pause() {
// console.log(this.isPlaying);
console.log("executed pause");
this.isPlaying = false;
}
}
var fstSong = new Music('Stairways to Heaven', 'Pablo Fransisco', 15);
fstSong.play();
Я ищу pause()
, чтобы остановить счетчик и установить fstSong.startTime
на второечто он остановился на.