修复async content中事件不使用await会报错的问题

This commit is contained in:
shijian 2023-12-18 00:29:57 +08:00
parent 7cade08dd9
commit d6941b3774
1 changed files with 22 additions and 14 deletions

View File

@ -32143,7 +32143,8 @@ new Promise(resolve=>{
if(!_status.event) return; if(!_status.event) return;
// game.createEvent的时候还没立即push到next里 // game.createEvent的时候还没立即push到next里
Promise.resolve().then(()=>{ Promise.resolve().then(()=>{
const eventPromise=_status.event.next.find(e=>e.toEvent()==event); const callback=()=>{
let eventPromise=_status.event.next.find(e=>e.toEvent()==event);
// 如果父级事件也是一个异步的话,那应该立即执行这个事件的 // 如果父级事件也是一个异步的话,那应该立即执行这个事件的
// 如果在AsyncFunction执行过程中在别的位置新建了一个异步事件那也直接等会set配置完执行 // 如果在AsyncFunction执行过程中在别的位置新建了一个异步事件那也直接等会set配置完执行
if (eventPromise&&_status.event.content instanceof AsyncFunction){ if (eventPromise&&_status.event.content instanceof AsyncFunction){
@ -32156,8 +32157,15 @@ new Promise(resolve=>{
// 不直接game.loop(event)是因为需要让别人可以手动set()和setContent() // 不直接game.loop(event)是因为需要让别人可以手动set()和setContent()
// 再执行game.loop是因为原有的game.loop被await卡住了 // 再执行game.loop是因为原有的game.loop被await卡住了
// 得新执行一个只执行这个异步事件的game.loop // 得新执行一个只执行这个异步事件的game.loop
Promise.resolve().then(()=>game.loop(eventPromise)); game.executingAsyncEvent=Promise.resolve().then(()=>game.loop(eventPromise))
.then(()=>{
delete game.executingAsyncEvent;
});
} }
};
// 没有await上个事件也就是_status.event
if(game.executingAsyncEvent) game.executingAsyncEvent.then(callback);
else callback();
}); });
}); });
this.#event=event; this.#event=event;