2017-04-22 74 views
4

如何从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

按照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

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