У меня проблемы с управлением потоком выполнения. Это продолжение node.js, bluebird, плохой контроль над путь выполнения и поиск таблицы node.js завершается с ошибкой обещания в использовании. Судя по распечаткам console.log, моя рекурсивная процедура работает отлично, за исключением того, что первый вызов resolve() (сигнал для n-го рекурсивного вызова) дает зеленый свет последующему коду, который не должен получать этот зеленый свет. до тех пор, пока первый вызов рекурсивной подпрограммы не вызовет функцию resolve(). Оказывается, первый вызов рекурсивной подпрограммы дает ответ, который я хочу сообщить, но к тому времени, когда он сообщает об этом, последующий код больше не слушает его и счастливо работает вместе с «неопределенным» ответом. Плохо.
Мой код слишком длинный, чтобы поделиться здесь. Я попытался написать небольшую модель проблемы, но не нашел комбинации факторов, воспроизводящих поведение.
Звучит знакомо? Как вы сохраняете надлежащий контроль над промисами, своевременно выпуская дополнительный код?
Я подумал, что, возможно, первый вызов подпрограммы может запустить массив, переданный в Promise.all, а последующие вызовы добавят еще одну запись в этот массив. Я не пробовал. Псих?