2016-05-23 5 views
2

У меня есть 2 примера использования query в AngularJS:запрос Угловой асинхронной запрос

Первое:

requests.query().$promise.then(function(requestResponse) { 
    myFunction(requestResponse); 
}); 

Второе:

requests.query(function(requestResponse) { 
    myFunction(requestResponse); 
}); 

ли это 2 пробы же? В обоих случаях используется обещание получить данные async?

+0

Согласно документации - они одинаковы, но для '$ prom' дает вам необработанный доступ к обещанию' $ http'. Возможно, вы будете использовать его, когда вам нужен доступ к ответу «уведомлять» обещания, которого нет в ресурсе (у вас есть доступ к обратному сообщению «success» и «error» при использовании ресурса) –

ответ

0

Да, и одно и то же, кроме вас не может пройти null (без параметров) во 2-ом примере, чтобы избежать путаницы:

requests.query(null, function(requestResponse) { 
     myFunction(requestResponse); 
}); 

Глядя на ваш вопрос, это выглядит как requests создается $resource службы который обеспечивает 5 методов, и метод query является одним из этих 5 методов.

Все эти 5 методов возвращают объект, у которого есть объект $promise, где вы можете использовать функцию then() для успеха & ошибки. Итак, ваш первый фрагмент основан на этом.

Теперь все эти 5 методы также принимают последние два параметра, как неудача успеха & обратных вызовов, которые являются сокращением для функции then() так здесь приходит ваш второй фрагмент (Угловая внутренне использует, что $promise возвращаемый $http вызова).

Способы действия на объект класса или объект экземпляра может быть вызывается со следующими параметрами:

  • HTTP GET «класс» действия: Resource.action([parameters], [success], [error])
  • не-GET действия «класса»: Resource.action([parameters], postData, [success], [error])
  • не-ПОЛУЧИТЬ действия экземпляра: instance.$action([parameters], [success], [error])

Итак, вот ваш второй фрагмент. Итак, резюме, да, оба являются одним и тем же.

Смежные вопросы