Опитвам се да пренапиша кода за http://m.amsterdamfoodie.nl в по-модерен стил. По принцип приложението Angular на една страница изтегля набор от ресторанти с местоположения и ги поставя на карта. Ако потребителят е района на Амстердам, местоположението на потребителя също се добавя, както и разстоянията до местата.
В момента управлявам асинхронните връщания, използвайки много if (relevant object from other async call exists) then do next step
. Бих искал да използвам повече обещания, би било по-добре.
Така че контролът на потока трябва да бъде:
- Стартирайте изтегляне на данни на ajax и повикване за геолокация
- ако първо се върне геолокацията, запазете координатите за по-късно
- once ajax data is downloaded
- if geolocation available
- calculate distances to each restaurant, and pass control to rendering code
- в противен случай незабавно прехвърлете контрола, за да изобразите код
- if geolocation available
- ако геолокацията се разреши по-късно, изчислете разстоянията и изобразете отново
Моделите, които намирам в интернет, предполагат, че всички асинхронни повиквания трябва да се върнат успешно, преди да продължат, докато моето повикване за геолокация може да се провали (или да върне местоположение далеч от Амстердам) и това е ОК. Има ли трик, който мога да използвам в този сценарий или условните изрази наистина са правилният начин?
resolve
успешно, дори ако данните са отрицателни или несъществуващи - третирайте това като успешен резултат. Третирайтеreject
подобно наcatch
вtry/catch
блока и обработвайте фатални изключения. - person New Dev   schedule 04.11.2014if
, сега с удебелен шрифт, които използваха контрола на потока на angular $http и $q. Това може да е пожелателно мислене? - person Simon H   schedule 05.11.2014