函数外部的javascript变量(使用异步/等待)?
我有以下代码,由于语法错误而无法工作(在异步函数外部等待)函数外部的javascript变量(使用异步/等待)?,javascript,Javascript,我有以下代码,由于语法错误而无法工作(在异步函数外部等待) 如何使用wait定义变量并将其导出 当我定义这样一个变量并从其他文件导入它时,该变量是只创建一次(当文件第一次读取时?)还是每次导入时都创建 代码 import _ from 'lodash' import remoteConfig from '@react-native-firebase/remote-config' class RemoteConfig { constructor() { if (__DEV__)
import _ from 'lodash'
import remoteConfig from '@react-native-firebase/remote-config'
class RemoteConfig {
constructor() {
if (__DEV__) {
//Fetch, no cache. activate
remoteConfig().fetchAndActivate(0)
} else {
//Fetch, cache for 5 minutes and activate
remoteConfig().fetchAndActivate()
}
}
static async build() {
await remoteConfig().setConfigSettings({
minimumFetchIntervalMillis: 300000,
})
return new RemoteConfig()
}
setDefaults(defaults) {
remoteConfig().setDefaults(defaults)
}
getValues(keys) {
return _.pick(remoteConfig().getAll(), keys)
}
getValue(key) {
return remoteConfig().getValue(key)
}
}
export let firebaseConfig = await RemoteConfig.build()
我将它与import{firebaseConfig}from path/to/thefile一起使用
wait
只能在async
函数中使用。无法使用await
语法导出变量
由于无法使用wait
导出,因此很难说每次是否调用RemoteConfig.build()
。
如果我们假设,您编写了firebaseConfig=RemoteConfig.build()代码>。该函数将在评估模块时调用一次
以下是一个解决方法:
您可以定义一个函数来设置firebaseConfig
,并在应用程序启动时调用它
因此:
导出let firebaseConfig;
导出异步函数setFirebaseConfig(){
firebaseConfig=await RemoteConfig.build();
}
这将允许您不必多次调用RemoteConfig.build()
。另外,firebaesConfig
可以在不使用await
语法的情况下导出。要实现这一点,您必须等待允许这样做的时间(使用像这样的transpiler,您现在可以使用它)。它将允许完全相同的代码,你有
在此之前,实现像这样导出变量的唯一方法是保证变量的值,所有导入者都必须自己等待。如果OP不希望在导入中执行函数,是否可以使用异步自调用函数来代替它?RemoteConfig.build()
不会被多次计算。模块代码在导入时第一次进行评估,然后将相同的导出返回给所有导入方。我不确定您所说的OP是什么意思,我不想在导入中执行函数。因为如果他从子组件导入配置,那么每次组件出现时都会调用该函数。只要在应用程序引导时调用它,就会初始化firebaseConfig,并且它可以在整个应用程序中使用。@eugene,这只不过是一次。@yash我想你是想使用单例模式。既然您已经在构造函数中使用了异步函数,为什么不从那里调用build()方法并只导出类的单个实例呢?