2017-04-22 62 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); 
     }); 
    }); 
    } 
}