###awaitつければいい?
firebase.auth().onAuthStateChangedはPromiseを返さないので前にawaitなどをつけても意味がありません。
###コード
以下のように記述すると同期処理を行ってくれました。
store/auth.js
import firebase from "firebase";
export const actions = {
async getUserData({ state, dispatch , ... }) {
//関数をPromise化して宣言しているだけです、あとで使います↓
function auth() {
return new Promise(resolve => {
firebase.auth().onAuthStateChanged(async user => {
//awaitが使えます。引数の「user」を使った処理を書きます。
resolve(返す値); //特にないならresolve()でok
});
});
}
//ここからが実際に実行される内容の部分です↓
try {
await auth(); //先程宣言した関数を使用
//ここの処理は auth()が終わるまで実行されません
return true;
} catch (e) {
console.log(e);
return false;
}
},
//戻り値を使用する場合↓
let result = await dispatch("getUserData");
if(result){
//正常に実行された場合の処理
}else{
//エラー時の処理
}
async user => { の部分はasync function(user){ と同じです