В моей игре я хочу сохранить обновленную оценку от пользователя, а затем извлечь рейтинг из БД. Я понял, что обещания - это путь, и я уже пробовал много ответов здесь о переполнении стека, но я не могу понять, почему я получаю следующую ошибку:
TypeError: Невозможно прочитать свойство 'then' из неопределенного
С помощью этой функции я обновляю счет для пользователя:
saveScoreOnDb: function () {
var self = this;
if(!this.scoreUpdated && (this.score > this.game.global.currentUser.high_score)){
// do this just once
this.scoreUpdated = true;
return new Promise(function (resolve, reject) {
// save current score on Db
var xhttp = new XMLHttpRequest();
xhttp.open("PUT", "https://myproject.herokuapp.com/api/users/" + self.game.global.currentUser.id, true);
xhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
var input = JSON.stringify({
'high_score': self.score
});
xhttp.onload = function(){
if (xhttp.readyState == XMLHttpRequest.DONE && xhttp.status == 200){
console.log('resolved the savetoDB thingy');
resolve(xhttp.response);
}
};
xhttp.onerror = function(){
reject(xhttp.statusText);
};
xhttp.send(input);
});
} else {
self.getRankingFromDb();
}
}
В другой функции внутри переключателя я вызываю функцию с таким кодом:
this.saveScoreOnDb().then(function(reply){
console.log('promise: ', + reply);
self.getRankingFromDb();
});
Что не так в этом случае?