从数组发送有序数据
Send ordered data from an array
如何从 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);
根据 documentation、sendMessage
returns 一个承诺:有了这个,您可以知道消息何时发送,然后发送下一个,...等等:
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);
});
});
}
}
如何从 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);
根据 documentation、sendMessage
returns 一个承诺:有了这个,您可以知道消息何时发送,然后发送下一个,...等等:
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);
});
});
}
}