私のアプリでは、ある時点で更新する必要がある最新のスコアのリストがあります。私はそうする2つの機能を持っています。 Firebaseでasync/awaitの代わりに
function handleLastestScoresChange() {
$scope.newLatestScores = [{}];
getNewLatestScores().then(function() {
for (var i = 0; i < 10; i++) {
firebase.database().ref('Latest/' + i.toString()).set({
user: $scope.newLatestScores[i].username,
text: $scope.newLatestScores[i].text,
speed: $scope.newLatestScores[i].result,
Index: i + 1
})
}
})
};
async function getNewLatestScores() {
for (var i = 9; i >= 0; i--) {
if (i == 0 && firebase.auth().currentUser.isAnonymous === false) {
$scope.newLatestScores[i] = ({
'username': firebase.auth().currentUser.email,
'text': document.getElementById('Title').textContent,
'result': $scope.wordsperminute
})
}
else if (i == 0 && firebase.auth().currentUser.isAnonymous === true) {
$scope.newLatestScores[i] = ({
'username': "Anonymous",
'text': document.getElementById('Title').textContent,
'result': $scope.wordsperminute
})
}
else {
await firebase.database().ref('Latest/' + (i - 1).toString()).once('value').then(function (snapshot) {
$scope.newLatestScores[snapshot.val().Index] = ({
'username': snapshot.val().user,
'text': snapshot.val().text,
'result': snapshot.val().speed
})
})
}
}
}
データベースを参照getNewLatestScores機能で、私は非同期を使用する/すべてのスコアが読み込まれたことを確認するために待っていたと私はそれらを書く前に、私の$ scope.newLatestScoresオブジェクトであるように、約束を返します。データベース。しかし、私のアプリは、async/awaitをサポートしていないため、FirefoxやMS Edgeなどでは動作しません。 async/awaitを使わずに同じ効果を得ることができるのだろうかと思っていました。