我正在使用expressjs框架,并尝试使用textMessageNumbers
软件包将文本消息发送到request
个数字数组。
for(let i = 0; i < textMessageNumbers.length; i++) {
request('https://LINK_TO_API?destination=' + textMessageNumbers[i] + '&q=' + api + '&message=' + textMessage, { json: true }, function(err, res, body) {
if(err) {
res.write("<br><div class='alert alert-warning'>Error occurred while sending text message to " + textMessageNumbers[i] + "</div>")
callback()
}
if(res.body == 0) {
res.write("<br><div class='alert alert-success'> Text message sent successfully to <b>" + textMessageNumbers[i] + "</b></div>")
callback()
} else {
res.write("<br><div class='alert alert-warning'> Couldn't send message to <b>" + textMessageNumbers[i] + "</b></div>")
callback()
}
})
}
res.write("<br><div class='alert alert-success'> Delivery Note Successfull</div>")
res.end()
return
由于请求函数调用是异步的,因此即使未调用回调,for循环也将继续执行。一旦for循环完成执行,res.end()
调用将关闭响应对象,从而使回调内部的res.write()
调用无法执行。我如何才能使循环的每次迭代都等到回调完成之后,才能使响应对象仅在回调所有对请求函数的异步调用之后才关闭。