Meteor异步调用Instagram API不在客户端返回。在服务器端返回

时间:2014-06-30 08:54:23

标签: meteor

服务器端:

Meteor.methods({

    getFromInstagram: function(){

        console.log("called!");

        Future = Npm.require('fibers/future');
        var myFuture = new Future();

        var url = "https://api.instagram.com/v1/media/popular?access_token=[ACCESSTOKEN]";

        Meteor.http.get(url, function(error, results){
            if(error){
                myFuture.throw(error);
            } else {
                myFuture.return(results);
            }
        });

        console.log( myFuture.wait() );
        return myFuture.wait();

    }

});

客户方:

instagramContent = Meteor.call("getFromInstagram");
console.log(instagramContent);

服务器端控制台日志工作并返回一个对象。

Chrome控制台中的客户端控制台日志返回undefined。我在俯瞰什么?

1 个答案:

答案 0 :(得分:1)

客户端始终是异步的。

尝试类似:

instagramContent = Meteor.call("getFromInstagram", function (error, result) {
    console.log(result);
});

从文档(http://docs.meteor.com/#meteor_call):

  

在客户端上,如果你没有传递回调并且你不在存根中,则调用将返回undefined,并且你将无法获得该方法的返回值。这是因为客户端没有光纤,因此实际上没有任何方法可以阻止远程执行方法。