1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

firebase.auth().onAuthStateChangedで同期処理を行う[Nuxt/Vuex]

Last updated at Posted at 2021-04-25

###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){ と同じです

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?