我正在使用 AngularJS 处理 Facebook Graph API。它有一个名为 FB.api();
的函数它返回一个包含一些数据的响应对象。然而,这是一个异步函数。我想知道如何等待此函数返回,然后再继续执行脚本的其余部分。
考虑以下代码:
var data = [];
FB.api('/' + response.data[i].id + '/tags', 'GET', {}, function(response) {
for(var j = 0; j < response.data.length; j++) {
var friend = {
id: response.data[j].id,
name: response.data[j].name
};
FB.api('/' + response.data[j].id + '/picture?width=200&height=200', 'GET', function(response) {
friend.url = response.data.url;
});
$timeout(function() {
data.push(friend);
}, 3000);
}
});
我正在尝试构建一个返回对象列表的函数。我循环遍历数据并将所需的数据保存在对象中。在循环内,我再次调用异步 API 函数来获取一些附加数据。但是,该函数不会立即返回,因此数据 response.data.url
从未保存在friend
中对象。
我用过 Angular 的 &timeout
模拟等待该函数返回的服务;然而,这似乎是一种非常老套的技术。有什么方法可以在执行脚本的其余部分之前等待所有函数返回吗?
如果可能,请尝试建议代码示例。
最佳答案
您可能会看到下面的链接,我认为这与您的问题类似
Is there a possible way implementing Promise inside angular.foreach?
关于javascript - 如何等待异步函数返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805464/