[英]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);
根據文檔 , 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.