Если вы можете использовать новый Node, Google, как использовать async / await, то вы можете за цикл все запросы и ждать их.
Если вы не можете, вы можете сделать это рекурсивно:
function processAllOneByOne(fns, i){
if (i >= fns.length) { return Promise.resolve({done:true}) }
fns[i]().then(() => processAll(fns, i+1));
}
И назовите это с
processAllOneByOne(fns, 0)
Обратите внимание, что, как только вы создадите, пообещайте CANT обработать, как это выполняется "внутри". Таким образом, вам нужно иметь fns
, который является массивом функции, вызывающей эту функцию, создающей и возвращающей Promise, которого вы хотите дождаться, чтобы завершить.
Итак, нажмите что-нибудь вроде fns.push(() => sendAlert(some, paramaters))
, где sendAlert создает необходимое обещание.