簡體   English   中英

從陣列發送有序數據

[英]Send ordered data from an array

如何從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);

根據文檔sendMessage返回一個promise:用這個你可以知道消息何時被發送然后發送下一個,...等:

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));
      }
   }
}

或者,您可以將所有消息加入一個消息,並僅發送組合消息。

這是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);
      });
    });
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM