javascript 如何为同时触发的每个函数添加延迟?

ma8fv8wu  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(169)

我需要在早上8点运行3函数,这样我的电报机器人就可以发送我需要发送的所有消息,但由于电报机器人(反垃圾邮件)的限制,它向我发送了这个错误:
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分钟。

fnx2tebb

fnx2tebb1#

您可以单独创建一个触发器,也可以使用setTimeout

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

  deleteTriggers();
  scheduledTrigger(8.00);
}

相关问题