从阵列发送有序数据

时间:2017-04-22 07:26:56

标签: javascript telegram-bot

如何从Telegram Bot中的数组发送有序数据?

例如,我在数组中有text1text2text3, 但它会像text3text1text2一样发送它们,所以不按原始顺序发送。

这是我的代码:

function sendAllText(msg, opts) {
   if (locale.keyboards[msg.text].text) {
      var i,j,tempstring;
      for (i=0,j=locale.keyboards[msg.text].text.length; i<j; i++) {
          tempstring = locale.keyboards[msg.text].text[i];
          bot.sendMessage(msg.chat.id, tempstring, opts);
      }
   }
}

该函数的调用如下:

sendAllText(msg, opts);

2 个答案:

答案 0 :(得分:2)

根据documentationsendMessage会返回一个承诺:通过此,您可以知道邮件何时发送,然后发送下一个,...等等:

function sendAllText(msg, opts) {
   if (locale.keyboards[msg.text].text) {
      var i,j,tempstring, promise;
      promise = Promise.resolve();
      for (i=0,j=locale.keyboards[msg.text].text.length; i<j; i++) {
          tempstring = locale.keyboards[msg.text].text[i];
          promise = promise.then(bot.sendMessage.bind(bot,msg.chat.id, tempstring, opts));
      }
   }
}

或者,您可以将所有消息加入一个消息,并仅发送组合消息。

答案 1 :(得分:1)

以下是trincot答案的另一个版本,试图提高可读性。

function sendAllText(msg, opts) {
  var textArr = locale.keyboards[msg.text].text;
  var promise = Promise.resolve();

  if (textArr.length) {
    textArr.forEach(function(value) {
      promise.then(function() {
        bot.sendMessage(msg.chat.id, value, opts);
      });
    });
  }
}