Вы добавляете элементы массива OrderProducts в асинхронном контексте, эта ваша фраза является ключевой: " после завершения всех нажатий в массив PrevOrders".
Выв настоящее время не ожидает завершения всех ваших асинхронных вызовов.Вам нужно собрать все обещания, которые вы генерируете, а затем дождаться завершения всех из них, прежде чем получить доступ к вашим данным.
Promise.all(myArrayOfPromises).then(
() => { /* access your data */ }
)
Кроме того, у вас также есть дополнительный асинхронный контекст, исходящий из подписки нанаблюдаемый.Предполагая, что вы получите только одно значение из этой подписки, вам нужно будет преобразовать его в обещание и добавить его в список обещаний, которые вам нужно ждать.