我创建了一个服务函数,它将API调用中的位置值返回给Facebook图形API
getLocation: function (access_token) {
return $http.get('https://graph.facebook.com/me?fields=location&access_token=' + access_token).then(function (response) {
console.log(response.data.location.name);
return response.data.location.name;
})
},
控制台日志返回正确的响应,以便我需要发送到我在另一个函数中创建的对象
createProfile: function (uid, user, credential) {
var profile = {
name: user.displayName,
email: user.email,
avatar: user.photoURL,
location: Auth.getLocation(credential.accessToken)
};
console.log(profile);
但我在控制台中看到以下内容。当我只想在getLocation服务的.then()响应函数内返回字符串时,它返回给我一个promise对象。
答案 0 :(得分:0)
问题是:因为$ http.get()。then()是一个异步函数,所以你不能从它返回任何值。所以这样你永远不会得到价值。 而且你也可以改进你的代码。
代码如下:
getLocation: function (access_token, successHandler) {
$http.get('https://graph.facebook.com/me?fields=location&access_token=' + access_token).then(function (response) {
console.log(response.data.location.name);
successHandler(response.data.location.name);
})
}
createProfile: function (uid, user, credential) {
var profile;
function successHandler(response) {
profile = {
name: user.displayName,
email: user.email,
avatar: user.photoURL,
location: response
};
console.log(profile);
}
Auth.getLocation(credential.accessToken, successHandler);
}