“Uncought (in belofte) undefined” -fout bij gebruik met = Locatie in Facebook Grafiek API-query

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=locationik krijg een fout Uncaught (in promise) undefinedBij 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 rejectheeft 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 rejectalleen aan te roepen in het geval van een daadwerkelijke fout, en ook… lege exception-handlers hebben is niet de beste programmeerpraktijk.

Other episodes