Я пытаюсь переписать код для http://m.amsterdamfoodie.nl в более современном стиле. В основном одностраничное приложение Angular загружает множество ресторанов с местами и размещает их на карте. Если пользователь находится в районе Амстердама, тогда добавляется местоположение пользователя, равно как и расстояния до мест.Необязательные Угловые обещания
В настоящее время я управляю асинхронными возвратами, используя большое количество if (relevant object from other async call exists) then do next step
. Я бы хотел больше использовать обещания, было бы лучше.
Таким образом, управление потоком должно быть:
- Начало загрузки Аякса данных и геолокации вызов
- если геолокация возвращает первый, магазин Coords для последующего
- раз Аякса загрузки данных
- если имеется местонахождение на карте
- вычислить расстояние до каждого ресторана, и передать управление визуализацией код
- еще пройти контроль немедленно, чтобы сделать код
- если имеется местонахождение на карте
- если геолокация решает позже, вычислять расстояния и пересборку
Паттерны, которые я нахожу в Интернете, предполагают, что все асинхронные вызовы должны успешно вернуться, прежде чем продолжить, тогда как мой запрос геолокации может завершиться неудачей (или вернуть местоположение далеко от Амстердама), и все в порядке. Есть ли трюк, который я мог бы использовать в этом сценарии, или это условные утверждения, на самом деле пути?
Ваше обещание еще может 'успешно resolve' даже если данные«отрицательный «или вообще не существует», рассматривают это как успешный результат. Обработайте 'reject' аналогично' catch' в блоках 'try/catch' и обрабатывайте фатальные исключения. –
Как проверить, разрешено ли обещание геолокайона после того, как у меня есть данные ресторана. Если он не разрешился, я не буду ждать его (в результате может случиться так, что человек все равно не находится в Амстердаме). –
Возможно, я что-то упустил, но вы можете решить, получили ли вы данные или получили отрицательный результат. Это станет вкладом в ваш следующий шаг. –