如何从Telegram Bot中的数组发送有序数据?
例如,我在数组中有text1
,text2
,text3
,
但它会像text3
,text1
,text2
一样发送它们,所以不按原始顺序发送。
这是我的代码:
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);
答案 0 :(得分:2)
根据documentation,sendMessage
会返回一个承诺:通过此,您可以知道邮件何时发送,然后发送下一个,...等等:
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);
});
});
}
}