Skip to main content

Form OnSave

onSave 事件在用户点击保存或者提交按钮后,并通过表单的本地校验后执行。

支持异步事件处理

onSave 事件处理程序有能力支持以异步的方式处理程序逻辑。当事件处理程序返回一个 Promise 时,formOnSave 事件变为异步。注意,onSave脚本处理逻辑是有超时限制的,每一个 onSave事件处理时间不能超过 10 秒。

onSave 事件只会等待处理程序返回一个 Promise 。如果需要在处理程序中处理多个 Promise,建议将所有 Promise 包装在 Promise.all() 方法中并返回单个结果 Promise。这可以尽量减少超时导致的等待时间。

如果在 onSave处理程序中抛出一个异常,则会直接终止处理程序执行。您也可以通过调用 ctx.getEventArgs().cancel()取消保存操作。如果调用此方法,OnSave 事件仍将继续执行完成,但不会发生实际的保存。

异步事件处理超时

使用异步处理程序时,表单加载将等待承诺被履行。为确保加载按时完成,处理程序会在 10 秒后引发超时异常,以便让您知道并且去调整异步 OnSave 事件以获得更好的性能。

在某些情况下,您可能希望挂起 OnSave 执行,这时候如果发生超时将产生超时错误。一个例子是在异步 OnSave 中打开一个对话框并会等待用户进行确认。此时要确保 OnSave 异步操作一直等待,您可以通过 调用 OnSave 事件参数中ctx.getEventArgs().disableAsyncTimeout()。设置 disableAsyncTimeout 时,将不会应用该处理程序的超时。它将继续等待该处理程序执行完成。

caution

disableAsyncTimeout 要谨慎使用,因为它可能会影响表单的性能。