Ожидание асинхронных функций, вызываемых внутри для завершения цикла в Javascript - PullRequest
0 голосов
/ 15 мая 2019

Я разрабатываю веб-приложение, в котором текстовые сообщения должны отправляться нескольким пользователям после отправки формы. Я создал цикл 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()
...