Javascript lit-html中的异步事件处理程序
有没有一种方法可以在lit html中使用Javascript lit-html中的异步事件处理程序,javascript,typescript,kotlin,lit-html,kotlin-js,Javascript,Typescript,Kotlin,Lit Html,Kotlin Js,有没有一种方法可以在lit html中使用async事件处理程序 在提交表单以创建新用户时,会触发此提交事件,但我还希望在添加新用户后重新加载用户列表 constructor(container: Element, state: app.state.DashboardState) { this.container = container; this.state = state; this.state.usersCreateState.ch
async
事件处理程序
在提交表单以创建新用户时,会触发此提交事件,但我还希望在添加新用户后重新加载用户列表
constructor(container: Element, state: app.state.DashboardState) {
this.container = container;
this.state = state;
this.state.usersCreateState.changed = () => render(html`
<form
@submit="${e => this.submit(e)}"
class="stack display:flex flex-grow:1">
使submit(e)
异步时,submit事件不再触发,这意味着preventDefault不会触发,而是在控制台中转储此错误时尝试发布到当前URL:
VM4535 user.ecff3a6d.js:20420 Uncaught ReferenceError: regeneratorRuntime is not defined
at UsersCreate.submit (VM4535 user.ecff3a6d.js:20420)
at HTMLFormElement.<anonymous> (VM4535 user.ecff3a6d.js:20408)
at EventPart.handleEvent (VM4535 user.ecff3a6d.js:19355)
at HTMLFormElement.EventPart.__boundHandleEvent (VM4535 user.ecff3a6d.js:19317)
submit @ VM4535 user.ecff3a6d.js:20420
(anonymous) @ VM4535 user.ecff3a6d.js:20408
handleEvent @ VM4535 user.ecff3a6d.js:19355
EventPart.__boundHandleEvent @ VM4535 user.ecff3a6d.js:19317
它生成包含kotlin.js.Promise的类型脚本
submit(): kotlin.js.Promise<io.jvaas.state.vo.ResultVO>;
您的问题似乎与事件处理程序无关。看起来您正在编译到一个旧的JS语言版本-至少在ES2017之前添加了异步函数(async/await)-并且您没有加载运行转换的异步函数所需的库(再生器运行时) 您需要加载再生器:
如果您使用Babel进行编译,此选项可能会有所帮助:我使用的是Parcel1,也许我应该尝试升级到Parcel2(parceljs.org)
@JsName("submit")
fun submit(): Promise<ResultVO> {
submit(): kotlin.js.Promise<io.jvaas.state.vo.ResultVO>;
submit(e) {
e.preventDefault();
document.querySelector(":focus")?.dispatchEvent(new Event("blur"));
this.state.usersCreateState.create.submit().then(() => {
this.state.usersListState.list.submit();
})
}