有什么办法保证执行顺序吗?或者有什么办法可以取消当前正在执行的脚本?

2023-12-02

我在文本框上有一个类似自动完成的功能。

textBox.addKeyUpHandler(textBoxLookupHandler)

会发生什么

如果用户打字速度相对较快,例如a b,似乎发生了以下情况。

  1. 处理程序a被调用。
  2. 处理程序ab被调用。
  3. ab返回较少的结果。正因为如此,它返回before的处理程序a.
  4. 处理程序a然后返回很多结果。

所以最后,用户输入了ab,但他们正在显示结果a因为结果为a覆盖结果ab.

可能的解决方案

如果我可以编写一些客户端脚本,我就知道如何处理这个问题。但由于我使用的是 UiApp,所以我不能这样做。

  1. 保证 GAS 的执行顺序(我确信这是不可能的/是一个荒谬的请求)
  2. GAS 中有一些方法可以取消所有其他当前正在运行的脚本。

气体有一个开锁服务这将保证您的执行顺序。请参阅 Google Apps 开发者博客“并发和 Google Apps 脚本" entry.

你的处理程序应该看起来像这样:

function textBoxLookupHandler(e) {
  var lock = LockService.getPrivateLock(); // Lock for just this user
  lock.waitLock(15000);  // wait max 15 seconds before exception.

  // Do whatever you used to do...

  lock.releaseLock();
  return app;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么办法保证执行顺序吗?或者有什么办法可以取消当前正在执行的脚本? 的相关文章

随机推荐