我正在尝试向我订阅的用户发送自动新闻消息(+ -8000), 为此,我使用for循环来传递每个用户。 问题是我在我的for循环内部的异步函数的回调中使用异步函数,但我的机器人发送所有文本然后所有泛型,所以它可能需要长达8分钟的用户beetween收到文本和通用的。
这是我的代码:
for (user of userList) {
sendText({
id: user.id,
text: Sometext
},
//////CALLBACK/////////
(err, data) => {
if (err) {
console.err("text => " + err)
}
console.log(`Text send ${user}`)
/////IT SHOULD SEND THE GENERIC EVERYTIME WHEN THE TEXT CALLBACK
sendGeneric({
id: user.id,
elements: elements
},
//////CALLBACK/////////
(err, data) => {
if (err) {
console.err("Generic => " + err)
}
console.log(`carousel send ${user}`);
})
})
}
然后在我的日志中我得到了
Text send user1
Text send user2
Text send user4
Text send user5
Text send user3
carousel send user1
carousel send user4
carousel send user2
carousel send user5
carousel send user3
答案 0 :(得分:0)
那么,sendText
和sendGeneric
是异步函数吗?因为你永远不会等他们。
此外,如果你支持最新的ecmascript,你可以用forync包装for循环的函数,然后等待每个sendText
var someFunc = async function() {
//Some code ...
for(user of userList){
await sendText(/*your function*/);
}
}
如果您不支持async / await的最新ecmascript,那么您可以为每次迭代链接.then
(类似于队列)