LiteLDev / LegacyScriptEngine

A plugin engine for running LLSE plugins on LeviLamina
https://lse.liteldev.com/
GNU General Public License v3.0
43 stars 8 forks source link

mc.listen()回调函数使用异步无法正常运行 #10

Open Hesitate-P opened 2 years ago

Hesitate-P commented 2 years ago

异常模块

ScriptEngine(脚本引擎)

操作系统

Windows 11

LiteLoader版本

2.5.1

BDS版本

1.19.20

发生了什么?

RT,这是个编写nodejs插件时发现的问题。 此问题在quickjs中没有发现。

复现此问题的步骤

将这串代码输入到您的nodejs插件中,您会发现mc.listen中的回调函数不会执行: async function abc(a) { if (a == 0) { a = 1 } else { a = 0 } return a } mc.listen("onServerStarted", async function () { let d = await abc(1) log(d) })

有关的日志/输出

(无)

插件列表

17:22:20 INFO [Server] 插件列表 [5]
17:22:20 INFO [Server] - LLMoney [v2.5.0] (LLMoney.dll)
17:22:20 INFO [Server]   EconomyCore for LiteLoaderBDS
17:22:20 INFO [Server] - ScriptEngine-Lua [v2.5.0] (LiteLoader.Lua.dll)
17:22:20 INFO [Server]   Lua ScriptEngine for LiteLoaderBDS
17:22:20 INFO [Server] - ScriptEngine-QuickJs [v2.5.0] (LiteLoader.Js.dll)
17:22:20 INFO [Server]   Javascript ScriptEngine for LiteLoaderBDS
17:22:20 INFO [Server] - ScriptEngine-NodeJs [v2.5.0] (LiteLoader.NodeJs.dll)
17:22:20 INFO [Server]   Node.js ScriptEngine for LiteLoaderBDS
17:22:20 INFO [Server] - TEST [v1.0.0] (TEST)
17:22:20 INFO [Server]   TEST plugin
17:22:20 INFO [Server]
Timiya-re commented 1 month ago

可以用Promise来代替吧,反正这也不阻塞

function onStart() { abc(1).then((res)=>{ log(res); }); } mc.listen("onServerStarted", onStart);