Ошибка" Uncaught (in promise) undefined " при использовании with=location в запросе API графика Facebook

в настоящее время я разрабатываю веб-приложение с API Facebook Graph.

моя текущая цель-получить только сообщения, которые имеют прикрепленное местоположение.

в то время как получение сообщений с и без местоположения уже работает, я не могу получить только сообщения с местоположением.

запрос, который извлекает оба типа выглядит следующим образом:'/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();
}

Log показывает следующее:

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

есть ли у кого-нибудь возможное решение для этого?

для получения дополнительной информации о том, как выглядит код, см. my предыдущий вопрос.

2 ответов


ошибка говорит вам, что есть ошибка, но вы не поймаете ее. Это, как вы можете поймать его:

getAllPosts().then(response => {
    console.log(response);
}).catch(e => {
    console.log(e);
});

вы также можете просто поставить console.log(reponse) в начале вашей функции обратного вызова API в ней определенно есть сообщение об ошибке от API Graph.

дополнительная информация: 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 фактически принимает один параметр: это исключение, которое произошло в вашем коде, которое вызвало отклонение обещания. Итак, когда вы звоните reject() значение исключении undefined, следовательно," неопределенная " часть в ошибке, которую вы получаете.

вы не показываете код, который использует обещание, но я думаю, что это что-то вроде этого:

var promise = doSth();
promise.then(function() { doSthHere(); });

попробуйте добавить пустой вызов сбоя, например:

promise.then(function() { doSthHere(); }, function() {});

это предотвратит ошибку появиться.

тем не менее, я бы хотел позвонить reject только в случае фактической ошибки, а также... наличие пустых обработчиков исключений-не лучшая практика программирования.