React Native 在导出前等待 AsyncStorage

React Native await AsyncStorage before export

根据 AsyncStorage 的用户设置偏好,我需要初始化两个 Firebase 环境之一。我有来自 javascript 文件的片段,我正在使用它来设置 Firebase 数据库,但正如您可以清楚地看到的那样,它会在 await 调用中给我一个语法错误。

导出 firebase 符号的最佳方法是什么,但只有在进行了适当的 initializeApp 调用之后?

谢谢,

红色


import firebase from 'firebase';
import { AsyncStorage } from 'react-native';
import { FIREBASE_CONFIG, FIREBASE_CONFIG_DEMO, DATA_ENVIRONMENT_STORAGE_KEY } from '../../../shared/env';


async function initializeFirebase()
{
    value = await AsyncStorage.getItem(DATA_ENVIRONMENT_STORAGE_KEY);
    if ((value == null) || (value == 'live'))
        firebase.initializeApp(FIREBASE_CONFIG);
    if (value == 'demo')
        firebase.initializeApp(FIREBASE_CONFIG_DEMO);
}
await initializeFirebase();

export var db = firebase.database();
export default firebase;

如果我的理解是正确的,你想要的是初始化 firebase,然后创建一个数据库引用并导出它。

试试这个:

initializeFirebase.js

import firebase from 'firebase';
import { AsyncStorage } from 'react-native';
import {
    FIREBASE_CONFIG,
    FIREBASE_CONFIG_DEMO,
    DATA_ENVIRONMENT_STORAGE_KEY
} from '../../../shared/env';

async function initializeFirebase() {
    const value = await AsyncStorage.getItem(DATA_ENVIRONMENT_STORAGE_KEY);

    let firebaseConfig = null;
    if ((value === null) || (value === 'live')) {
        firebaseConfig = FIREBASE_CONFIG;
    } else if (value === 'demo') {
        firebaseConfig = FIREBASE_CONFIG_DEMO;
    }

    if (firebaseConfig !== null) {
        await firebase.initializeApp(firebaseConfig);
        return firebase.database();
    }
}

export default initializeFirebase;

someOtherFile.js

import initializeFirebase from './initializeFirebase.js';

async someOtherFunction() {
    // ...    

    const database = await initializeFirebase();

    // ... do something with 'database'
}