2017-01-31 1 views
1

Im

$q.allPromises(http request).then (function (data) { 
    //more code logic 
}) 

mit Es funktioniert das erste Mal, aber ich nenne diese Methode 24 Stunden später und feststellen, dass „Daten“ ein sind Array von Objekten und es wird jedes Mal angehängt, wenn ich $ q.allPromises mit dem neuen http json Objekt aufruft.

Wie kann ich das alte "Objekt" im Array vergessen. Ich ziehe alle 24 Stunden einen JSON und kümmere mich nur um das JSON-Objekt, das ich gerade heruntergeholt habe. Ich möchte das JSON-Objekt aus der vorherige http Versprechen Anfrage nach unten gezogen außer Acht zu lassen, aber es scheint, wie es auf ein Array anhängt hält

ich versuchte, indem

$q.allPromises(http request).then (function (data) { 
    //more code logic 
    data.shift(); 
}) 

shift() sollte das erste Element aus dem Array entfernen aber es scheint nicht zu funktionieren.

+1

Was ist der Zweck der Verwendung von $ ist q.all() wenn Sie eindeutig nur ein Versprechen brauchen, das gelöst werden soll? Können Sie Beispielcode angeben? Ich nehme an, dass Sie AngularJS verwenden? –

+0

Ja, ich benutze angularjs. Ich muss eindeutig nur ein Versprechen lösen. Ich bin neu zu eckig und sah ein Beispiel online, wie man http Json-Anfragen unter Verwendung des Versprechens löst, also kopierte ich es wörtlich. Ich rufe im Grunde an, um http req aufzulösen, um json zu ziehen und bestimmte Werte in Variablennamen zu extrahieren. – Bilal

+0

Ich kann den Code heute Abend posten, es ist leider zu Hause – Bilal

Antwort

3

Sie müssen $q.all nicht verwenden. Der $http Provider gibt ein Versprechen wie von selbst:

$http.get({...}).then(function(response) { 
    console.log(response.data) // this will print actual data 
}); 

$http.post({...}).then(function(response) { 
    console.log(response.data) // this will print actual data 
}); 

$q.all ist eine spezielle Methode für auf vielen Versprechungen warten vor der Einnahme eine Aktion zu lösen, etwa so:

var promiseA = $http.get({...}).then(function(response) { 
    console.log(response.data) // this will print actual data 
}); 

var promiseB = $http.post({...}).then(function(response) { 
    console.log(response.data) // this will print actual data 
}); 

var arrayOfPromises = $q.all([promiseA, promiseB]).then(function(arrayOfResults) { 
    console.log(arrayOfResults); // this will print an array of the results of the http requests 
}); 
Verwandte Themen