$ http service in angular istonton, и мой предыдущий опыт с запросом xhr/ajax показал, что он столкнулся, когда два запроса имеют один и тот же объект xhr. Разве это не проблема с угловым? если да, то как угловой справляется с такой ситуацией?
ответ
Я думаю, что вы «Непонимание того факта, что услуга $http
является одноточечным, чтобы означать, что все запросы каким-то образом будут иметь один и тот же объект XHR
. Они этого не делают.
Служба $http
сама по себе является одноэлементной, но это не означает, что запросы имеют один и тот же объект XHR
.
В любое время вы вызываете метод $http
службы (например, $http#get
) инициализирует новый асинхронный запрос ... Тем не менее, это не инициализировать новый объект $http
.
Взгляните на некоторых из Addy Osmani's примеров коды для одноплодной схемы:
return {
getInstance: function() {
if (!instance) {
instance = init();
}
return instance;
}
};
Паттерн синглтона просто гарантирует, что новый экземпляр $http
службы сам не получает инициализирован снова и снова .. . Но это не означает, что есть только один XHR
объект.
псевдо-код $http
службы будет выглядеть примерно так:
var $httpProvider = (function() {
var somePrivateConfig = "something important";
var service = {
request: function() {
// make an HTTP request with an XHR object
}
};
return {
init: function() {
// this is the important part that makes sure its a singleton
window.$http = window.$http || service;
}
};
})();
/**
* Something like this would be called whenever you
* inject the $http service as a dependency...
* However, since it could be passed into multiple things all in the same runtime,
* like controllers, directives, etc., we only need to initialize it ONE time
*/
$httpProvider.init();
/**
* Now let's pretend we're inside, say, a controller.
*
* This method can safely be called many times,
* but the method is always being called from the same singleton object
*/
$http.request();
Кроме того, вы заметите, что есть локальная переменная somePrivateConfig
в $httpProvider
IIFE. Если бы мы повторно инициализировали новый $http
каждый раз, когда он был добавлен к компоненту (будь то контроллер, директива или что-то еще), будет создана новая приватная переменная, но мы всегда хотим ссылаться на это же значение на протяжении всего жизненного цикла объекта $http
, чтобы мы могли гарантировать, что все эти компоненты всегда ссылаются на одну и ту же информацию.
Но это не имеет никакого отношения к самому объекту XHR
. Возможно, я неправильно использовал некоторые из приведенных выше терминов и исказил, где и как сами поставщики в контексте AngularJS инициализируются в одноэлементные объекты, но принцип одноэлементного шаблона по-прежнему заключается в том, что он просто означает оболочку асинхронного запроса «класс» (которая является услугой $http
) является одноточечным, но XHR
нет.
$ http-запросы являются асинхронными и возвращают обещание с методами success() и error(). Ниже дополнительной информации (д сервис $, что реализация обещаний Angularjs):
«Служба, которая позволяет запускать функции асинхронно, и использовать их возвращаемые значения (или исключения), когда они сделали обработки»
Читайте здесь:
- 1. Singleton JS Object in Angular Service
- 2. Angular 2 Http Service Injectable
- 3. AngularJS singleton service значение
- 4. Как сделать Anglo2 Service singleton?
- 5. Nativescript и angular 2 Http service
- 6. Возврат данных http от Angular service
- 7. set head angular http service put
- 8. Используйте $ http один раз от Angular Service
- 9. AngularJS Service Singleton?
- 10. Intent service singleton
- 11. angular2 rc5 router service singleton
- 12. WebLogic clustered singleton service
- 13. wcf singleton service multithreaded
- 14. Observable BehaviorSubject Service - Singleton и провайдеры
- 15. Angular Service Promises
- 16. Angular 1.5.4 Service undefined
- 17. HTTP POST XML to REST Singleton Service throws NotSupportedException
- 18. Служба Singleton в Angular 2
- 19. Угловая 2 http service
- 20. Generic Angular Promise Service
- 21. PHP Service: Singleton или Static
- 22. Service Bus - Singleton Connection Class?
- 23. singleton WCF service in C#
- 24. WCF Service singleton get instance
- 25. Android: Bound Service или Singleton
- 26. Meteor-Angular Service function
- 27. Использование Angular Factory Service
- 28. Ajax in Angular service
- 29. Использование $ http в Angular Service - Невозможно прочитать свойство «post» undefined
- 30. Получение данных ответа от AJAX с помощью Angular $ http Service
опубликовать код, который может помочь – ngLover