繁体   English   中英

如何为同时触发的每个 function 添加延迟?

[英]How do I add delay to every function I trigger at the same time?

我需要在早上 8 点运行 3 function,以便我的电报机器人可以发送我需要发送的所有消息,但是由于电报机器人(反垃圾邮件)的限制,它向我发送了这个错误:

Exception: Request failed for https://api.telegram.org returned code 429. Truncated server response: {"ok":false,"error_code":429,"description":"Too Many Requests: retry after 36","parameters":{"retry_after":36}} (use muteHttpExceptions option to examine full response)

因此,有人说我应该添加一些延迟,但我不知道如何。

这是我的代码

function function_Triggered() {
  FunctionOne(), FunctionTwo(), FunctionThree()

  deleteTriggers();
  scheduledTrigger(8.00);
}

function scheduledTrigger(hours, minutes){
  var now = new Date();
  var year = now.getFullYear();
  var month = now.getMonth();
  var day = now.getDate();

  pars = [year,month,day,hours,minutes];

  var scheduled_D = new Date(...pars);
  var hours_remain = Math.abs(scheduled_D - now) / 36e5;
  ScriptApp.newTrigger(function_Triggered)
  .timeBased()
  .after(hours_remain * 60 * 60 * 1000)
  .create()
}

function deleteTriggers(){
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i<triggers.length; i++) {
    if(   triggers[i].getHandlerFunction()== function_Triggered) {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}

有人可以帮我在哪里以及如何延迟吗? 我希望它们在每个功能延迟 5 分钟的情况下自行运行。

您可以单独触发永远 function 或使用setTimeout

function function_Triggered() {
  setTimeout(FunctionOne, 0);
  setTimeout(FunctionTwo, 1000 * 60 * 5);
  setTimeout(FunctionThree, 1000 * 60 * 5 * 2);

  deleteTriggers();
  scheduledTrigger(8.00);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM