所以我有以下代码来循环一个对象:
so I have the following code to loop through a Object:
for(var x in block){ sendTextMessage(block[x].text, sender, function(callback){ //increment for? }) }对于每次迭代我想做一个请求(发送一个facebook消息),只有在该请求完成后,我才想要进行下一次迭代,这是因为没有任何回调,消息不会被发送正确的接班人.
For each iteration I want to do a request (send a facebook message), only after that request has finished, I want to go through the next iteraction, this is because without any callbacks, the messages won't be sent in the right succession.
function sendTextMessage(text, sender, callback) { let messageData = { text:text} request({ url: 'graph.facebook/v2.6/me/messages', qs: {access_token:token}, method: 'POST', json: { recipient: {id:sender}, message: messageData, } }, function(error, response, body) { if (response.statusCode >= 200 && response.statusCode < 300){ if(callback) callback('success') } }) }我以前遇到过这个问题,但无法解决,我该怎么办?
I've had this problem before and not been able to solve it, how can I, somehow do this?
如有任何问题,请追问.谢谢.
If you have any questions, please ask. Thank you.
推荐答案我最终关注了 @Matt Diamond建议并执行如下所示的递归函数:
I ended up following @Matt Diamond advice and do a recursive function that looks like this:
function buildFlow(block, sender){ var i = 0; recursive() /* for(var x in block){ sendTextMessage(block[x], block[x].type, sender) console.log(x) }*/ function recursive(){ if (i<Object.keys(block).length){ sendTextMessage(block[Object.keys(block)[i]], block[Object.keys(block)[i]].type, sender, function(){ i++ recursive() }) }else{ i = 0 } } }感谢所有提供帮助的人,非常感谢.
Thanks everyone who gave some help, greatly appreciated.
更多推荐
循环异步请求
发布评论