繁体   English   中英

如何从导入调用异步函数?

[英]How to call async function from import?

我有这个异步代码函数从AsyncStorage获取lang var。 我想在构造(?)方法的每个应用页面上调用此函数。 但是当我尝试调用它时,看起来代码运行同步,而我的loadedLang是= {_ 45:0,_81:0,_65:null,_54:null}。 如何以正确的方式做到这一点? 谢谢。

main.js

import load from "./components/languageLoad"
               constructor(props) {
                    super(props);

                    let loadedLang = load();
                    console.log("LOADED", loadedLang);

                    this.state = {
                        settings: 1,
                        deviceLocale: "EMPTY"
                    };
                }

languageLoad.js

import React, { Component } from 'react';
import { AsyncStorage} from 'react-native';
import Lang from 'react-native-i18n'

export default load = async () => {
            try {
                const customLang = await AsyncStorage.getItem('customLang');
                if (customLang !== null && customLang !== undefined && customLang !== "") {
                    deviceLocale = customLang;
                }

            } catch (error) {
                deviceLocale = Lang.locale.split("-")[0] || "uk";
            }
            console.log("------------", deviceLocale, '-------------');
            console.log("------------", Lang.t('aboutAppText') , '-------------');
            Lang.locale = deviceLocale;
            return Lang;
        }

需要使用await调用async函数,并且只能从异步函数内部调用。

JS构造函数不能是异步的。 因此,您将重新构建代码以使其工作方式不同。 要么在构造函数之外加载数据,要么在构造函数中使用匿名自执行异步函数来加载数据并存储它。 当然,本课程的其余部分需要处理数据可能不存在的事实。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM