从$ http .then()angular函数中返回值

时间:2016-06-27 14:31:03

标签: angularjs facebook-graph-api ionic-framework

我创建了一个服务函数,它将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对象。

Console logs

1 个答案:

答案 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); 
}