Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在异步调用和共享变量之间_Javascript_Node.js_Asynchronous_Async Await - Fatal编程技术网

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