首页 > 解决方案 > 在 Google Apps 脚本中异步运行函数

问题描述

我正在制作一个调用 GAS 函数的 Slack 机器人。一切正常,除了 Slack 显示一条错误消息,因为它在调用 API 时只等待 3 秒的响应。

谁能帮我弄清楚如何异步运行everyDay2,以便我可以在响应完成之前返回它。我已经尝试过承诺和回调,但我无法解决它。

function doPost(e){

  const promise = new Promise(everyDay2);

  return ContentService.createTextOutput('thinking...');

}

标签: javascriptasynchronousgoogle-apps-scriptpromiseslack-api

解决方案


承诺不起作用。改用触发器

function doPost(e) {
  runAfter1s('everyDay2');
  return ContentService.createTextOutput('thinking...');
}

const runAfter1s = func =>
  ScriptApp.newTrigger(func)
    .timeBased()
    .after(1000)
    .create();

确保在触发everyDay2后删除内部创建的触发器。


推荐阅读