【发布时间】:2020-02-11 16:50:42
【问题描述】:
我需要客户端代码等待调用的服务器端 (google.script.run) 函数完成,然后再运行更多代码。
withSuccessHandler(successFunc) 不会导致服务器调用之后的代码行等待。
我做了什么:
async function func(){
await google.script.run.withSuccessHandler(myFunc).serverFunc();
console.log("done");
}
func();
代码如何等到服务器端函数解析后才执行console.log 行?
【问题讨论】:
-
您的
serverFunc()是否返回承诺?您的代码应该等待它按原样解析 -
您需要将您的“程序”(即
serverFunc()中的代码放在promise 中,并在“程序”完成时将resolve()包装起来。让您的serverFunc返回这个承诺,以便它可以等待。 -
@Nick Parsons 在
google.script.run.withSuccessHandler(myFunc).serverFunc(),首先运行serverFunc()。这是 Google Apps 脚本,这是运行 Google 端的服务器。不幸的是,这并没有返回承诺。下一步,当serverFunc()没有出现错误时,运行withSuccessHandler并运行myFunc的函数。 Ref
标签: javascript google-apps-script web-applications promise async-await