Не храните XMLHttpRequest как свойство. Вместо этого создавайте его каждый раз, когда вам нужно / нужно отправить запрос конечной точке.
Кроме того, код может быть значительно упрощен:
class Service {
constructor(token) {
this.token = token;
this.profiles = [];
setInterval(this.doFunc.bind(this), 10000);
}
doFunc() {
if (this.profiles.length > 3) {
this.doChoice(this.profiles[0]).then(profile => {
console.log('Liked');
console.log(profile);
this.profiles.splice(this.profiles.indexOf(profile), 1);
});
}
}
doChoice(profile) {
return new Promise((resolve, reject) => {
let url = 'https://someurl/' + profile.id;
let xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.setRequestHeader("x-auth-token", this.token);
xhr.addEventListener("readystatechange", function () {
if (xhr.readyState === 4 && xhr.status === 200) {
resolve(xhr.responseText);
} else {
reject(new Error('XMLHttpRequest failed'));
}
});
xhr.send();
});
}
}
Как уже указывал @HereticMonkey, вы также не должны использовать setInterval
вне методов класса, потому что (а) это кажется невероятно странным и (б)он выполняет побочный эффект (в вашем случае действительно несколько побочных эффектов), просто импортируя класс.