Je développe actuellement une application Web avec l'API Graph Facebook.
Mon objectif actuel est de récupérer uniquement les messages auxquels un emplacement est associé.
Bien que la récupération de messages avec et sans emplacement fonctionne déjà, je ne suis pas en mesure de récupérer uniquement les messages avec emplacement.
La requête qui récupère les deux types ressemble à ceci: '/me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location'
La requête qui doit extraire uniquement les publications dont l'emplacement est semblable à ceci: /me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location
Le problème que j'ai, c'est qu'avec le paramètre &with=location
j'obtiens une erreur Uncaught (in promise) undefined
à cette partie de mon code:
if (response.paging && response.paging.next) {
recursiveAPICall(response.paging.next);
} else {
resolve(postsArr);
}
} else {
// Error message comes from here
reject();
}
Le journal montre ce qui suit:
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
Quelqu'un at-il une solution possible pour cela?
Pour plus d'informations sur l'apparence du code, voir mon question précédente .
L'erreur vous indique qu'il y a une erreur mais vous ne l'attrapez pas. Voici comment vous pouvez l'attraper:
getAllPosts().then(response => {
console.log(response);
}).catch(e => {
console.log(e);
});
Vous pouvez aussi simplement mettre un console.log(reponse)
au début de votre fonction de rappel d'API, il y a certainement un message d'erreur de l'API Graph dedans.
Plus d'informations: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
Ou avec async/wait:
//some async function
try {
let response = await getAllPosts();
} catch(e) {
console.log(e);
}
La reject
prend en fait un paramètre: c'est l'exception qui s'est produite dans votre code et qui a entraîné le rejet de la promesse. Ainsi, lorsque vous appelez reject()
, la valeur de l'exception est undefined
, d'où la partie "non définie" dans l'erreur que vous obtenez.
Vous ne montrez pas le code qui utilise la promesse, mais je pense que cela ressemble à ceci:
var promise = doSth();
promise.then(function() { doSthHere(); });
Essayez d'ajouter un appel d'échec vide, comme ceci:
promise.then(function() { doSthHere(); }, function() {});
Cela empêchera l’erreur d’apparaître.
Cependant, je n’envisagerais d’appeler reject
qu’en cas d’erreur réelle, et aussi… avoir des gestionnaires d’exceptions vides n’est pas la meilleure pratique de programmation.