Ik ben momenteel een webtoepassing ontwikkeld met de Facebook Grafl API.
Mijn huidige doel is om alleen posten op te halen met een bijgevoegde locatie.
Tijdens het ophalen van berichten met en zonder locatie is al aan het werk, ik ben niet in staat om alleen posten op te halen met locatie.
De query die beide typen ophalen, ziet eruit als volgt: '/me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location'
De query die alleen posts met locatie ophalen, ziet er als volgt uit: /me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location
Het probleem dat ik heb is dat met de parameter &with=location
ik krijg een fout Uncaught (in promise) undefined
Bij dit deel van mijn code:
if (response.paging && response.paging.next) {
recursiveAPICall(response.paging.next);
} else {
resolve(postsArr);
}
} else {
// Error message comes from here
reject();
}
Log toont het volgende:
DEBUG: -------------------------------
DEBUG: Ember : 2.4.5
DEBUG: Ember Data : 2.5.3
DEBUG: jQuery : 2.2.4
DEBUG: Ember Simple Auth : 1.1.0
DEBUG: -------------------------------
Object {error: Object}
error: Objectcode:
code: 1
1fbtrace_id: "H5cXMe7TJIn"
message: "An unknown error has occurred."
type: "OAuthException"
__proto__: Object
__proto__: Object
Uncaught (in promise) undefined
Heeft iemand hiervoor een mogelijke oplossing?
Voor meer informatie over hoe de code eruit ziet, zie mijn vorige vraag.
Antwoord 1, autoriteit 100%
De fout vertelt je dat er een fout is, maar je ziet hem niet. Dit is hoe je het kunt vangen:
getAllPosts().then(response => {
console.log(response);
}).catch(e => {
console.log(e);
});
Je kunt ook gewoon een console.log(reponse)
aan het begin van je API callback-functie plaatsen, er zit zeker een foutmelding van de Graph API in.
Meer informatie: https://developer.mozilla .org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
Of met async/wacht:
//some async function
try {
let response = await getAllPosts();
} catch(e) {
console.log(e);
}
Antwoord 2, autoriteit 10%
De reject
heeft eigenlijk één parameter nodig: dat is de uitzondering die in je code is opgetreden waardoor de belofte werd afgewezen. Dus wanneer u reject()
aanroept, is de uitzonderingswaarde undefined
, vandaar het “undefined” gedeelte in de foutmelding die u krijgt.
Je laat de code die de belofte gebruikt niet zien, maar ik denk dat het ongeveer zo is:
var promise = doSth();
promise.then(function() { doSthHere(); });
Probeer een lege mislukte oproep toe te voegen, zoals deze:
promise.then(function() { doSthHere(); }, function() {});
Hierdoor wordt voorkomen dat de fout verschijnt.
Ik zou echter overwegen om reject
alleen aan te roepen in het geval van een daadwerkelijke fout, en ook… lege exception-handlers hebben is niet de beste programmeerpraktijk.