Javascript 如何在Vuex状态内使用异步初始化的API?
我向大家介绍了Vue+Vuex,我很难弄清楚在哪里初始化一个具有异步初始化方法的API 显然,我不能在异步函数之外等待Javascript 如何在Vuex状态内使用异步初始化的API?,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我向大家介绍了Vue+Vuex,我很难弄清楚在哪里初始化一个具有异步初始化方法的API 显然,我不能在异步函数之外等待,如下所示: import { RequestSystemProxy } from "../../assets/scripts/RequestSystemProxy" const system = new RequestSystemProxy(); const handle = await system.Initialize(); const state = { ... }
,如下所示:
import { RequestSystemProxy } from "../../assets/scripts/RequestSystemProxy"
const system = new RequestSystemProxy();
const handle = await system.Initialize();
const state = { ... };
const getters = { ... };
const actions = { ... methods that use 'handle' ... };
const mutations = { ... };
export default {
state,
getters,
actions,
mutations
}
Vue不喜欢我导出这样的承诺:
import { RequestSystemProxy } from "../../assets/scripts/RequestSystemProxy"
export default (async function () {
const system = new RequestSystemProxy();
const handle = await system.Initialize();
const state = { ... };
const getters = { ... };
const actions = { ... methods that use 'handle' ... };
const mutations = { ... };
return {
state,
getters,
actions,
mutations
}
})();
我的意图是使用handle
内部actions
来发出各种异步请求,但在handle
解决之前,这显然是不可能发生的
我在这里有点不知所措,我不知道放在哪里最好。我想在初始化Vue应用程序之前,我可以全局初始化句柄
,但从结构上讲,初始化与使用它的地方相去甚远。有这样做的典型方法吗
任何帮助都将不胜感激 您需要在您的商店中创建操作
(这只是方法而已)
const actions = {
async actionName({ state }) {
// write your code in here
},
}
你也可以写这个
export default {
namespaced: true,
state,
getters,
actions,
mutations
};
操作可以是异步的,因此只需存储对您的系统的引用。Initialize()
promise,并通过等待该承诺得到解决来为每个操作添加前缀
从“../../assets/scripts/RequestSystemProxy”导入{RequestSystemProxy}
const system=new RequestSystemProxy()
const initPromise=system.Initialize()
常量状态={…}
常量getters={…}
常量突变={…}
常量动作={
异步exampleAction(上下文){
const handle=等待初始化承诺
//现在使用手柄
}
}
导出默认值{
国家,,
获得者,
行动,
突变
}
另一种选择是让您的模块(我们称之为store.js
)导出承诺
从“../../assets/scripts/RequestSystemProxy”导入{RequestSystemProxy}
const system=new RequestSystemProxy()
导出默认系统。初始化()。然后(句柄=>{
//现在初始化你的商店。。。
返回{
国家,,
获得者,
//等
}
})
然后在你的main.js
(或其他)中使用承诺
从'path/to/store.js'导入storePromise'
storePromise.then(store=>{
新Vue({
商店,
//等
}).$mount(“#应用程序”)
})
注意:在初始化和装载根Vue
实例之前,这需要考虑如何处理UI。看起来您正在尝试执行该函数,同时以结尾()导出它。尝试执行export default async()=>{}@DevonNorris我认为OP用于执行函数对我来说似乎是一种模式,但idkI确实用于执行函数。我不想返回函数本身,我想立即调用函数并导出其结果{state,getter,actions,mutations}
我认为您应该将这个函数/文件导入到您想要使用它的文件中。在另一个函数中,只需调用const{state、getter、actions、mutations}=wait fileImport()