等待在Java中调用for循环的异步函数完成

时间:2019-05-15 11:44:24

标签: javascript node.js express asynchronous wait

我正在开发一个Web应用程序,一旦提交表单,该文本应用程序将文本消息发送给多个用户。我创建了一个for循环,该循环遍历所有数字并使用异步瀑布发送消息。但是问题在于,因为for循环内的函数调用是异步的,for循环完成并且res.end()被调用。因此,内部的所有res.write();函数都没有,因为响应已经关闭。我如何才能等到for循环内函数的所有回调都执行完毕以结束响应。

res.write("Delivery note issued successfully")
res.write("Sending text messages....")

let api = '000000000000'

for(let i = 0; i < textMessageNumbers.length; i++) {
    res.write("Sending to " + textMessageNumbers[i])
    async.series([
        function(callback) {
            request('https://api_link?destination=' + textMessageNumbers[i] + '&q=' + api + '&message=' + textMessage, { json: true }, callback)
        }
    ], function(err, data) {
        if(err) {
            res.write("Error occurred while sending text message to " + textMessageNumbers[i])
        }

        if(data[0].body == 0) {
            res.write("Text message sent successfully to <b>" + textMessageNumbers[i] + "</b>")
        } else {
            res.write("Couldn't send message to <b>" + textMessageNumbers[i] + "</b>")
        }
    })
}

res.write("Delivery Note Successfull")
res.end()

0 个答案:

没有答案