現在、Facebook Graph APIを使用してWebアプリケーションを開発しています。
私の現在の目標は、場所が添付されている投稿のみを取得することです。
ロケーションのある投稿とない投稿の取得は既に機能していますが、ロケーションのある投稿のみを取得することはできません。
両方のタイプを取得するクエリは次のようになります。'/me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location'
場所のある投稿のみを取得するクエリは次のようになります:/me/feed?fields=id,name,message,picture,place,with_tags&limit=100&with=location
私が抱えている問題は、パラメータ&with=location
を使用すると、コードのこの部分でエラーUncaught (in promise) undefined
が発生することです。
if (response.paging && response.paging.next) {
recursiveAPICall(response.paging.next);
} else {
resolve(postsArr);
}
} else {
// Error message comes from here
reject();
}
ログには以下が表示されます。
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
誰にもこれに対する解決策がありますか?
コードの詳細については、私の 前の質問 をご覧ください。
エラーはエラーがあることを伝えますが、あなたはそれをキャッチしません。これはあなたがそれをキャッチする方法です:
getAllPosts().then(response => {
console.log(response);
}).catch(e => {
console.log(e);
});
APIコールバック関数の先頭にconsole.log(reponse)
を追加することもできます。その中にはGraph APIからのエラーメッセージが間違いなくあります。
詳細: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
または、async/awaitを使用:
//some async function
try {
let response = await getAllPosts();
} catch(e) {
console.log(e);
}
reject
は実際には1つのパラメーターを取ります。それは、Promiseが拒否される原因となったコードで発生した例外です。したがって、reject()
を呼び出すと、例外値はundefined
になります。したがって、エラーの「未定義」の部分になります。
Promiseを使用するコードは表示されませんが、次のようなものだと思います。
var promise = doSth();
promise.then(function() { doSthHere(); });
次のように、空の失敗呼び出しを追加してみてください。
promise.then(function() { doSthHere(); }, function() {});
これにより、エラーが表示されなくなります。
ただし、reject
の呼び出しは実際のエラーの場合にのみ検討し、空の例外ハンドラーを使用することはプログラミングのベストプラクティスではありません。