Я уточню свой комментарий в ответе. Держу пари, твой код на самом деле не работает, ты просто думаешь, что он работает.
Допустим, что вызов updateAll
возвращает что-то (т.е. не выдает ошибку) - будь то null, undefined, true, что угодно - тогда ваш обратный вызов будет вызван немедленно и не будет на самом деле ждите, пока ваш updateAll
выполнит асинхронную операцию. Теперь, если вызов updateAll
был достаточно быстрым, вам может показаться , что код работал тогда, когда он на самом деле не работал.
Это может помочь проиллюстрировать, что я имею в виду немного лучше:
Promise.resolve()
.then(function() { return undefined; })
.then(function() { console.log('it worked!'); });
Вы можете сделать две вещи (не зависящие друг от друга):
- Зарегистрируйте возвращаемое значение
updateAll
и посмотрите, обещание ли это
- Просто придерживайтесь того, что говорят документы, и используйте обратный вызов.
Лично я бы сделал 1, а затем я бы сделал 2:)