Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;未兑现的(承诺中的)未定义的“;在Facebook Graph API查询中使用with=location时出错_Javascript_Facebook Graph Api_Facebook Javascript Sdk - Fatal编程技术网

Javascript &引用;未兑现的(承诺中的)未定义的“;在Facebook Graph API查询中使用with=location时出错

Javascript &引用;未兑现的(承诺中的)未定义的“;在Facebook Graph API查询中使用with=location时出错,javascript,facebook-graph-api,facebook-javascript-sdk,Javascript,Facebook Graph Api,Facebook Javascript Sdk,我目前正在使用Facebook Graph API开发一个web应用程序 我当前的目标是只检索附加了位置的帖子 当检索带有和不带有位置的帖子已经开始工作时,我不能只检索带有位置的帖子 检索这两种类型的查询如下所示:'/me/feed?fields=id、name、message、picture、place,带有标签&limit=100&with=location' 应该只检索带有位置的帖子的查询如下:/me/feed?fields=id、name、message、picture、place,带有

我目前正在使用Facebook Graph API开发一个web应用程序

我当前的目标是只检索附加了位置的帖子

当检索带有和不带有位置的帖子已经开始工作时,我不能只检索带有位置的帖子

检索这两种类型的查询如下所示:
'/me/feed?fields=id、name、message、picture、place,带有标签&limit=100&with=location'

应该只检索带有位置的帖子的查询如下:
/me/feed?fields=id、name、message、picture、place,带有标签&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
有人有可能解决这个问题吗


有关代码外观的详细信息,请参见my。

错误会告诉您存在错误,但您无法捕获它。这就是你如何抓住它的方法:

getAllPosts().then(response => {
    console.log(response);
}).catch(e => {
    console.log(e);
});
您也可以在API回调函数的开头放一个
console.log(response)
,其中肯定有来自Graph API的错误消息

更多信息:

或使用异步/等待:

//some async function
try {
    let response = await getAllPosts();
} catch(e) {
    console.log(e);
}

reject
实际上包含一个参数:代码中发生的异常导致承诺被拒绝。因此,当您调用
reject()
时,异常值是
undefined
,因此您得到的错误中的“undefined”部分

您没有显示使用承诺的代码,但我认为它是这样的:

var promise = doSth();
promise.then(function() { doSthHere(); });
promise.then(function() { doSthHere(); }, function() {});
尝试添加一个空的失败调用,如下所示:

var promise = doSth();
promise.then(function() { doSthHere(); });
promise.then(function() { doSthHere(); }, function() {});
这将防止出现错误


但是,在实际错误的情况下,我会考虑调用<代码>拒绝<代码>,并且…拥有空的异常处理程序不是最佳编程实践。

在代码部分前面放一个console.log(response),看看你得到了什么。代码非常清楚,您不会捕获当前代码中的错误。它很可能会转到拒绝路径。我已经按照您的建议进行了更多的调试。事实上,所有的数据都被提取出来了。我还在GraphAPI浏览器中再次尝试了同样的方法。Graph API中似乎有一个bug,因为即使没有更多的帖子,也有下一个可用的分页属性。如果你转到下一个属性中的链接,你会得到上面的错误消息。最后,我用上一个属性而不是下一个属性进行了递归,从而完全修复了错误。你会将getAllPosts()放在哪里?嗯……就在你需要获取帖子的地方?我不确定我是否理解你的问题。什么是未定义的?您需要更具体一些,我假设您的代码中有其他错误,但我们不知道您的代码。那么,为什么要投否决票呢?哦,谢谢你的“只有在……的情况下才考虑打电话拒绝”部分