Эта функция написана мной самостоятельно
async function asyncAreaLoad() {
console.log( "asyncAreaLoad\t" + config.area + "\t" + room.id );
let check = await state.PersistanceManager.checkArea( config.area )
if ( check ) {
Logger.verbose( `PERSISTANCE:\troom: \t${room.id} EXIST, no Fetch` );
console.log( "NO FETCH" );
return;
}
const perLoader = state.EntityLoaderRegistry.get( 'persistence' );
perLoader.setArea( config.area );
const haveItems = await perLoader.hasData();
if ( !haveItems ) {
Logger.verbose( `PERSISTANCE:\t\tArea\t[${config.area}]\t with NO DATA!` );
console.log( "NO DATA" );
return;
}
let aw = await perLoader.fetchAll();
console.log( "FETCHED" );
state.PersistanceManager.addArea( config.area, aw.rooms );
Logger.verbose( `PERSISTANCE:\t\tArea\t[${config.area}]\t LOADED!` );
console.log( "Loaded" );
// state.PersistanceManager.populateArea( config.area );
}
await asyncAreaLoad();
Как видно по результату, функция запускается четыре раза и имя области совпадает valinorCastle .Я ожидал, что perLoader.fetchAll был запущен один раз, потому что addArea делает checkArea чтобы вернуть true .Вместо этого я получил это
Результат:
asyncAreaLoad valinorCastle valinorCastleMainRoom
asyncAreaLoad valinorCastle valinorCastle2
asyncAreaLoad valinorCastle valinorCastle3
asyncAreaLoad valinorCastle valinorCastle4
**FETCHED**
**AddedArea valinorCastle**
Loaded
**FETCHED**
Loaded
**FETCHED**
Loaded
**FETCHED**
Loaded