実現したいこと
非同期処理を利用してユーザーのクッキーをデータベースに保存してからページを遷移したいのですが、うまくいきません。
非同期処理で利用しているのがPromiseオブジェクトです。
発生している問題
発生している問題は、ユーザーのクッキーがデータベースに保存される前にページが遷移してしまいます。
該当のソースコード
Javascript
1 function submit() { 2 var button = document.getElementById("nickname_button"); 3 button.disabled = "disabled"; 4 var nickname = document.getElementById("nickname_id").value; 5 var rand4digits = String(Math.floor(Math.random() * 10000)); 6 db.collection("Participants").doc(rand4digits).get().then( 7 docSnapshot => { 8 console.log(docSnapshot.exists); 9 10 if (docSnapshot.exists == false) { 11 console.log("FINE"); 12 console.log(rand4digits); 13 db.collection("Participants").doc(rand4digits).set({ 14 nickname: nickname, 15 approved: false 16 }) 17 } else { 18 submit(); 19 } 20 }).then(() => { 21 document.cookie = 'ARWid=' + rand4digits + '; path=/' 22 }).then(() => { 23 window.location.href = "../dashboard" 24 }) 25 // .then(function() { 26 // window.location.href = "../dashboard" 27 // }) 28 29 30 }
補足情報(FW/ツールのバージョンなど)
そのデータベースとはFirebaseを利用しています。
ぜひ質問にお答えしてもらえれば嬉しいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。