Как написать функцию node.js, которая ожидает запуска события перед «возвратом»?

У меня есть приложение узла то есть невеб-приложение — оно выполняет серию асинхронных задач перед возвратом 1. Непосредственно перед возвратом результаты работы программы выводятся на консоль.

Как убедиться, что вся асинхронная работа завершена перед возвратом? Я смог добиться чего-то подобного в веб-приложении, убедившись, что все задачи мы выполнили перед вызовом res.end(), но у меня нет никакого эквивалента для окончательного «события», которое нужно вызвать, прежде чем позволить скрипту вернуться.

См. ниже мою (неработающую) функцию, пытающуюся дождаться, пока callStack не станет пустым. Я только что обнаружил, что это своего рода бессмысленный подход, потому что узел ожидает завершения процесса processHub, прежде чем входить в любую из асинхронных функций, вызываемых в processObjWithRef.

function processHub(hubFileContents){
    var callStack = [];
    var myNewObj = {};
    processObjWithRef(samplePayload, myNewObj, callStack);
    while(callStack.length>0){
        //do nothing
    }
    return 1
}

Примечание. Ранее я много раз пытался добиться такого поведения с такими библиотеками, как async (см. мой связанный вопрос в Как я могу сделать этот вызов для запроса в nodejs синхронным? ), поэтому, пожалуйста, примите ответ и комментарии, прежде чем предлагать какие-либо ответы, основанные на «просто используйте асинхронность».

10
задан Community 23 May 2017 в 12:25
поделиться