Paralelo $ http llamadas utilizando el mismo objeto -- angularjs camp Relacionados El problema

Parallel $http calls using same object


2
vote

problema

Español

I tienen la siguiente función en un controlador:

  this.someFunction = function() {     var filter = {         type: 'E'     };      someService.httpPostFunction(filter).then(function(response) {         console.log(response);     });      filter.type = 'H';     someService.httpPostFunction(filter).then(function(response) {         console.log(response);     });      filter.type = 'W';     someService.httpPostFunction(filter).then(function(response) {         console.log(response);     }); };   

Este es el someService.httpPostFunction :

  httpPostFunction: function(filter) {     var deferred = $q.defer();     var httpPromise = $http.post(url,filter)     .then(function(response) {         deferred.resolve(response.data);         }, function(error) {             deferred.reject(error.data);     });     return deferred.promise; }   

El someService.httpPostFunction devuelve me diferentes datos en función de filter.type . Quiero que se ejecutan en paralelo. Sin embargo, esta función se comporta como si el 127.0.0.1:6379> get mykey "Hello" 0 se define en 127.0.0.1:6379> get mykey "Hello" 1 , incluso en el primer 127.0.0.1:6379> get mykey "Hello" 2 llamada.

Creación de copias de la 127.0.0.1:6379> get mykey "Hello" 3 variables, cambiando 127.0.0.1:6379> get mykey "Hello" 4 de las copias y luego pasar las copias me da resultados correctos, pero esto no es factible. ¿Cómo puedo obtener el código funciona correctamente utilizando la misma variable?

Original en ingles

I have the following function in a controller:

this.someFunction = function() {     var filter = {         type: 'E'     };      someService.httpPostFunction(filter).then(function(response) {         console.log(response);     });      filter.type = 'H';     someService.httpPostFunction(filter).then(function(response) {         console.log(response);     });      filter.type = 'W';     someService.httpPostFunction(filter).then(function(response) {         console.log(response);     }); }; 

This is the someService.httpPostFunction :

httpPostFunction: function(filter) {     var deferred = $q.defer();     var httpPromise = $http.post(url,filter)     .then(function(response) {         deferred.resolve(response.data);         }, function(error) {             deferred.reject(error.data);     });     return deferred.promise; } 

The someService.httpPostFunction returns me different data based on filter.type. I want them to run in parallel. However, this function behaves as if the filter.type is set to 'W' even on the first httpPostFunction call.

Creating copies of the filter variable, changing type of the copies and then passing the copies gives me correct results but this is not feasible. How do I get the code working correctly using the same variable?

  
 
 

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Puede usar "index*.html"5 para enviar múltiples solicitudes de HTTP en paralelo

  "index*.html"6  
 

you can use $q.all to send multiple http request parallel

var filterObj = {    type: ['E', 'H', 'W'] }; var arr = []; for(item in filterObj.type){    arr.push(someService.httpPostFunction(item)) } $q.all(arr).then(function(responses) {     console.log( responses[0].data);     console.log( responses[1].data);     console.log( responses[2].data);   }); 
 
 
2
 
vote

Podría usar una matriz para almacenar las promesas y luego usar $ Q.Todas para atrapar todas las promesas, algo así como a continuación

  "index*.html"7  
 

You could use an array to store the promises and then use $q.all to catch all the promises something like below

this.someFunction = function() {     var filterObj = {         type: ['E', 'H', 'W']     };     var promises = filterObj.type.map(function(v) {         return someService.httpPostFunction(v);     });     $q.all(promises).then(function(response) {         console.log(response[0]);   //type E         console.log(response[1]);   //type H         console.log(response[2]);   //type W     }); }; 
 
 

Relacionados problema

4  Cómo obtener objeto en una matriz con índice en un controlador angular JS  ( How to get object in an array with index in a controller angular js ) 
Necesito obtener objetos en matriz para el índice dado en JS angular JS. scope.storeList = [{ 'id':101, 'name':indhu },{ 'id':102, 'name':selvin },...

4  Vuelva a crear el mapa de la Directiva de AngularJS de Google Map  ( Re create the map by angularjs directive of google map ) 
Estoy usando el tema cuadrado de angularjs y usando su directiva de mapa para generar el mapa como este: vagrant up4 Esto está en la página de búsqueda ...

0  La directiva de JS angular JS - Custome no se está reemplazando con plantilla real  ( Angular js custome directive is not getting replaced with actual template ) 
Estoy aprendiendo a JS angular y me gustaría crear mi directiva personalizada. Mi código JavaScript no muestra ningún error, pero la directiva personalizada n...

0  TokenMismatch de respuesta del servidor cuando usa $ Resse (AngularJS) para poner datos después de dos días  ( Server response tokenmismatch when use resourse angularjs to put data after t ) 
Tengo un problema al crear el sitio web para cargar datos en el servidor. Cuando el usuario inicia sesión y cambia los datos, uso $ $ Resource (AngularJS) par...

1  Cómo exportar datos a PDF desde la tabla dinámica en Angularjs  ( How to export data to pdf from dynamic table in angularjs ) 
Quiero exportar datos a PDF desde una tabla dinámica, todos los complementos usan tablas estáticas, quiero decir con tablas dinámicas que se crean cuando hago...

0  States Angularjs y plantillas dinámicas basadas en criterios  ( Angularjs states and dynamic templates based on criteria ) 
Estoy tratando de usar AngularJS + UI-Router en mi proyecto, está funcionando, pero estoy en medio de una situación aquí ... Tengo un estado de origen con U...

0  Cómo definir los atributos para todas las propiedades de un objeto simultáneamente (o establecer predeterminado)  ( How to define attributes for all properties of an object simultaneously or set ) 
Estoy escribiendo un proveedor de servicios de AngularJS (función) que: toma resultados de varias tablas diferentes de una base de datos SQLite devuelve ...

1  En AngularJs al tratar de eliminar una fila después de la clasificación, la fila incorrecta se elimina. Que es de acuerdo a la identificación. ¿Cómo escribiré el código para resolver?  ( In angularjs when trying to delete a row after sorting the wrong row gets delet ) 
**html part** <div> <p>search : <input type="search" ng-model="customer" placeholder="search for customers" /> </...

0  Jasmine SpyoneVent indefinido  ( Jasmine spyonevent undefined ) 
spyEvent = spyOnEvent('#BackYoyButton', 'click'); $('#BackYoyButton').trigger( "click" ); expect('click').toHaveBeenTriggeredOn($('#BackYoyBu...

0  Cómo convertir la fecha de ISI a ISO en JS  ( How to convert isi date to iso in js ) 
Estoy recibiendo la fecha como data.created = "Wed May 03 2017 15:41:49 GMT 0530(IST)" quiero convertirlo a Formato de ISI regular como 2017-03...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos