我在文本框上有一个类似自动完成的功能。
textBox.addKeyUpHandler(textBoxLookupHandler)
会发生什么
如果用户打字速度相对较快,例如a
b
,似乎发生了以下情况。
- 处理程序
a
被调用。
- 处理程序
ab
被调用。
-
ab
返回较少的结果。正因为如此,它返回before的处理程序a
.
- 处理程序
a
然后返回很多结果。
所以最后,用户输入了ab
,但他们正在显示结果a
因为结果为a
覆盖结果ab
.
可能的解决方案
如果我可以编写一些客户端脚本,我就知道如何处理这个问题。但由于我使用的是 UiApp,所以我不能这样做。
- 保证 GAS 的执行顺序(我确信这是不可能的/是一个荒谬的请求)
- 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(使用前将#替换为@)