我在文本框中有类似自动完成的功能。
textBox.addKeyUpHandler(textBoxLookupHandler)
如果用户输入速度相对较快,请说a
b
,则会发生以下情况。
a
的处理程序。ab
的处理程序。ab
返回的结果较少。因此,它会在 a
。a
的处理程序返回许多结果。因此,最后,用户输入了ab
,但他们会显示a
的结果,因为a
的结果覆盖了ab
的结果。
如果我可以编写一些客户端脚本,我知道如何处理这个问题。但由于我使用的是UiApp,我不能这样做。
答案 0 :(得分:4)
GAS有一个Lock Service,可以保证您的执行顺序。请参阅Google Apps开发人员博客“Concurrency and Google Apps Script”条目。
您的处理程序应如下所示:
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;
}