能否将google.script.run返回的服务端数据直接存入客户端变量?
关于google.script.run直接赋值变量的问题
不行,你没法直接用const data = google.script.run.getNames(category);这种写法获取返回数据,核心原因是google.script.run是异步执行的。
google.script.run调用服务器端函数时,本质是发起了一个异步网络请求——客户端代码不会等待服务器返回结果,而是直接继续执行后续逻辑。所以你直接赋值得到的不是服务器返回的数据,而是google.script.run这个对象本身,而非实际的业务数据。
替代方案:用Promise封装实现类同步写法
如果你觉得回调写法不够直观,可以用Promise把google.script.run包装起来,再配合async/await让代码看起来更像同步逻辑:
async function getNamesData(category) { return new Promise((resolve, reject) => { google.script.run .withSuccessHandler(resolve) // 成功时把结果传给resolve .withFailureHandler(reject) // 失败时把错误传给reject .getNames(category); }); } // 使用示例 async function useData() { try { const data = await getNamesData(category); // 在这里直接使用data即可 console.log(data); } catch (error) { // 处理错误 console.error('获取数据失败:', error); } } // 调用执行 useData();
这种写法只是对异步回调的封装,底层依然是异步逻辑,但写法上更简洁易读,接近你想要的“直接赋值”的体验。
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

