Я читал об Угловых обещаниях получить данные из веб-службы, одна вещь, которая привлекла мое внимание, заключается в том, что Angular почему-то знает, был ли выполнен или отклонен запрос «запрос», как это понимает Angular? Проверяет ли он код состояния ответа? Можете ли вы пересмотреть эти правила?Как Угловая знает, выполнено ли обещание?
ответ
Ваше предположение верно!
HttpProvider, который используется $ http и $ resource, например, определяет успешный ответ как код ответа HTTP от 200 до 299 включительно.
Вы можете изменить это поведение, предоставив собственный HttpProvider. Кроме того, службы, которые используют HttpProvider, могут отменить этот ответ и заменить более подходящие условия отказа/успеха.
This является прекрасным описанием Promises в AngularJS. Это помогло мне более полно понять, что происходит за кулисами.
Мы уже говорили о логике, отец спрашивает сын, чтобы получить прогноз погоды , и как сын не может сказать ему сразу, а отца есть и другие вещи, чтобы сделать в то время как он ждет, сын делает обещание он должен вернуться с погодой. Когда у отца будет прогноз, он будет либо упаковать лодку, либо остаться внутри. Важно отметить здесь, поездка сына на холм не должна «блокировать» отца от что-то делать, поэтому ситуация идеально подходит для создания обещания, которое может быть разрешено (выполнено или отклонено) позже.
Используя функцию Angular's(), мы можем указать, что должен сделать папа в случае каждого результата. Функция then() принимает функции 2 как параметры: функцию, которая должна выполняться, когда выполняется обещание , и функция, которая должна быть выполнена, когда обещание отклонено.
// function somewhere in father-controller.js var makePromiseWithSon = function() { // This service's function returns a promise, but we'll deal with that shortly SonService.getWeather() // then() called when son gets back .then(function(data) { // promise fulfilled if (data.forecast==='good') { prepareFishingTrip(); } else { prepareSundayRoastDinner(); } }, function(error) { // promise rejected, could log the error with: console.log('error', error); prepareSundayRoastDinner(); }); };
Спасибо @Grant, сообщение потрясающее, однако я понимаю логику «обещаний», но я не понимал, как Угловая решила, было ли обещание «выполнено» или «отвергнуто». Код, который вы разделяете, действительно полезен в качестве второго шага, где вы можете решить, что делать после того, как вы знаете результат обещания. – user1336321
@ user1336321, я фактически опубликовал это, и Грант добавил детали. Извините, на самом деле это не отвечало на ваш вопрос. Вы в основном стремились понять логику решения вопроса о том, какой успешный ответ является «неудачей». Интересная тема, и Майкл сделал хорошую работу, объяснив ее чуть дальше. – MattDionis
- 1. Угловая: как уничтожить обещание
- 2. Угловая фабрика, возвращающая обещание
- 3. Угловая обещание в цикле
- 4. $ .Deferred: Как определить, когда выполнено любое обещание.
- 5. Угловая неопределенное обещание
- 6. Есть ли способ узнать, выполнено ли обещание ES6/отклонено/разрешено?
- 7. Угловая обещание между двумя функциями
- 8. Угловая директива и $ д обещание
- 9. Обещание внутри задания cron не выполнено
- 10. Обещание снова обещания (Угловая JS)
- 11. Угловая $ HTTP обещание всегда решения
- 12. Угловая $ http обещание не решает
- 13. Угловая 2 как решить обещание вручную?
- 14. Как внедрить сервис помощнику после того, как обещание выполнено?
- 15. Как проверить, выполнено ли fadeOut()?
- 16. Угловая - несколько обещаний, завернутых в одно обещание
- 17. Угловая $ q возвращающая обещание несколько $ http звонков
- 18. Как вы исполняете, только если обещание было выполнено?
- 19. Данные дисплея Emberjs после того, как обещание будет выполнено?
- 20. Угловая обещание не в решении жасмин
- 21. Угловая обещание «не определена» в странном темпе
- 22. Угловая Тест не вызывает обещание CallBack
- 23. Угловая, ионная, Обещание службы, отложенное, async
- 24. Угловая - вернуть $ модальное обещание и отклонить его
- 25. Как QEMU знает направление ветвления TB, которое было выполнено?
- 26. Как проверить, выполнено ли видео?
- 27. Как узнать, разрешено ли обещание?
- 28. Как проверить, ожидает ли обещание
- 29. Угловая и жасмин: как издеваться над сервисом, который возвращает обещание
- 30. Угловая функция возвратила обещание до того, как http api завершает
Я отмечаю это как правильный ответ, поскольку он дал точные ответы на оба моих вопроса. – user1336321