Javascript 在异步调用和共享变量之间
我有一个函数,它是一个多次触发的事件。 发生这种情况时,我需要读取一个文件,将变量填充到管理器中:Javascript 在异步调用和共享变量之间,javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,我有一个函数,它是一个多次触发的事件。 发生这种情况时,我需要读取一个文件,将变量填充到管理器中: roomAdded: state => function ( config, room ) { const perMng = state.PersistanceManager; const perLoader = state.EntityLoaderRegistry.get( 'persistence' ); if ( perMng.checkArea( config
roomAdded: state => function ( config, room ) {
const perMng = state.PersistanceManager;
const perLoader = state.EntityLoaderRegistry.get( 'persistence' );
if ( perMng.checkArea( config.area ) )
return;
var rooms = [];
var items = [];
perLoader.setArea( config.area );
perLoader.fetchAll().then( res => {
res.rooms.forEach( room => {
//...
perMng.addArea( config.area, rooms );
现在,我的fetchAll不是一个异步函数,我不能使它异步,因为这是EntityLoaderRegistry想要的,我不能更改它的工作方式
我需要的是,从2°调用开始,我想检查区域,并在上一次调用完成后执行if中的操作,因为上一次调用可以用下一次调用的内容填充地图。但是我不能使用wait键,因为我想再说一遍,它不是一个异步函数。
fetchAll
不需要是一个async
函数。很明显,它会回报你一个承诺,这就是你所需要的。声明roomAdded
async,您可以在那里await fetchAll
。@mbojko即使我做了roomAdded async
我得到了perLoader.fetchAll(),SyntaxError:await只在异步函数中有效
,如我所说,将roomAdded
声明为异步函数。fetchAll
不需要是async
函数。很明显,它会回报你一个承诺,这就是你所需要的。声明roomAdded
async,您可以在那里wait fetchAll
。@mbojko即使我做了roomAdded async
我得到了perLoader.fetchAll(),SyntaxError:wait只在async函数中有效,正如我所说的,声明roomAdded
。