Meteor,使用Future进行同步调用

时间:2015-03-26 17:08:50

标签: meteor future

我有以下代码,无论有没有Future,都无法正常工作。我是否以正确的方式实施了未来?

 getGiphy: function(key) {
 var future = new Future();
 var url = "http://api.giphy.com/v1/gifs/translate?s=cat+"+key+"&api_key=849238";
  //synchronous GET
  var result = Meteor.http.get(url, {timeout:30000});
  if(result.statusCode==200) {
    var respJson = JSON.parse(result.content);
    console.log("response received.");
    future["return"](respJson);
  } else {
    console.log("Response issue: ", result.statusCode);
    var errorJson = JSON.parse(result.content);
    throw new Meteor.Error(result.statusCode, errorJson.error);
  }

  return future.wait();
}

我得到了这个: '提供调用结果的例外' getGiphy''

1 个答案:

答案 0 :(得分:0)

不,你必须以这种方式实现未来:

var future = new Future();
....
future.return(respJson);
....
future.throw(result.statusCode, errorJson.error);
....
return future.wait();

希望这会有所帮助。

编辑:

您可以通过以下方式进行Meteor.http调用:

try {
    return Meteor.http.call("GET", "http://api.giphy.com/v1/gifs/translate?s=cat+"+key+"&api_key=849238", {
        headers: {
            "Accept": "application/json"
        }
    });
} catch (err) {
    console.log(err);
}