如何使用Meteor在函数中获取异步数据

斯科兹

我是Meteor的新手,我正在尝试从Heroku API中获取异步数据。

服务器端代码:

heroku = Meteor.require("heroku");

Meteor.methods({
    'getHeroku': function getHeroku(app){
        client = new heroku.Heroku({key: "xxxxxx"});
        client.get_app(app, function (error, result) {
            return result;
        });
    }
});

客户端代码:

Template.herokuDashboard.helpers({
    appInfo: function() {
        Meteor.call('getHeroku', "meathook-api", function (error, result) {
            console.warn(result);
        } );
    }
});

Heroku需要一段时间才能回答,所以答案是undefined

那么捕获异步结果的最佳方法是什么?

谢谢。

库巴·维罗贝克(Kuba Wyrobek)

通用解决方案:

客户端:

    if (Meteor.isClient) {
        Template.herokuDashboard.helpers({
            appInfo: function() {
                return Session.get("herokuDashboard_appInfo");
            }
        });
        Template.herokuDashboard.created = function(){
            Meteor.call('getData', function (error, result) {
                Session.set("herokuDashboard_appInfo",result);
            } );
        }
    }

无法直接从Meteor.call返回结果。但是,至少有两种解决方案(@akshat和@Hubert OG):如何在模板帮助器中使用流星方法

服务器端(Meteor._wrapAsync):

使用Meteor._wrapAsync:

if (Meteor.isServer) {
  var asyncFunc = function(callback){
      setTimeout(function(){
          // callback(error, result);
          // success :
          callback(null,"result");
          // failure:
          // callback(new Error("error"));
      },2000)
  }
  var syncFunc = Meteor._wrapAsync(asyncFunc);
  Meteor.methods({
      'getData': function(){
          var result;
          try{
               result = syncFunc();
          }catch(e){
              console.log("getData method returned error : " + e);
          }finally{
              return result;
          }

      }
  });
}

正确使用Future库:

if (Meteor.isServer) {
    Future = Npm.require('fibers/future');

    Meteor.methods({
        'getData': function() {
            var fut = new Future();
            setTimeout(
                Meteor.bindEnvironment(
                    function() {
                        fut.return("test");
                    },
                    function(exception) {
                        console.log("Exception : ", exception);
                        fut.throw(new Error("Async function throw exception"));
                    }
                ),
                1000
            )
            return fut.wait();
        }
    });
}

不建议在没有Meteor.bindEnvironment的情况下使用Future库,请参阅:

还有第三种使用异步工具的方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用PHP中的函数获取数据?

来自分类Dev

如何实现异步任务以使用异步和等待从数据库中获取数据?

来自分类Dev

如何从异步函数中获取价值?

来自分类Dev

如何在Powershell中向异步作业添加回调函数并获取返回数据

来自分类Dev

如何在Powershell中向异步作业添加回调函数并获取返回数据

来自分类Dev

如何从异步函数中获取数据并在获取数据后允许下一个代码执行

来自分类Dev

无法对从异步存储中获取的数据使用函数,因为其为null

来自分类Dev

无法对从异步存储中获取的数据使用函数,因为其为null

来自分类Dev

无法对从异步存储中获取的数据使用函数,因为其为null

来自分类Dev

获取异步函数返回的数据

来自分类Dev

Vue / Vuex使使函数异步从Firebase中获取数据的麻烦

来自分类Dev

记忆使用异步Ajax获取其数据的Javascript函数

来自分类Dev

Java中如何使用Jsoup获取函数数据的值

来自分类Dev

如何使用异步函数异步侦听 Firestore 中的值?

来自分类Dev

我如何使用芹菜(异步)从以前存在的数据中从 django 模型(数据库)中获取数据

来自分类Dev

如何在Swift 3.0中使用url通过异步获取多个JSON数据

来自分类Dev

如何在 Angular 6 中使用异步获取 JSON 对象中的数据集合?

来自分类Dev

如何获取打字稿中异步函数的返回类型?

来自分类Dev

如何等待异步函数中的获取响应?

来自分类Dev

如何使用余烬数据如何分别获取异步子级?

来自分类Dev

使用Omni Thread Library在Delphi中异步获取函数结果

来自分类Dev

如何使用Reactivevar更新Meteor中的数据

来自分类Dev

如何使用Jest测试异步函数中的函数参数

来自分类Dev

如何在ANT D列中获取/呈现异步数据

来自分类Dev

如何使用异步/等待从sqlite db.each获取数据

来自分类Dev

如何从scrapy的后续函数中获取数据

来自分类Dev

如何从scrapy的后续函数中获取数据

来自分类Dev

如何使用Meteor.loginWithPassword()登录后创建异步函数以返回用户状态

来自分类Dev

c# - 如何在c#中的非异步函数中使用await调用异步函数?

Related 相关文章

  1. 1

    如何使用PHP中的函数获取数据?

  2. 2

    如何实现异步任务以使用异步和等待从数据库中获取数据?

  3. 3

    如何从异步函数中获取价值?

  4. 4

    如何在Powershell中向异步作业添加回调函数并获取返回数据

  5. 5

    如何在Powershell中向异步作业添加回调函数并获取返回数据

  6. 6

    如何从异步函数中获取数据并在获取数据后允许下一个代码执行

  7. 7

    无法对从异步存储中获取的数据使用函数,因为其为null

  8. 8

    无法对从异步存储中获取的数据使用函数,因为其为null

  9. 9

    无法对从异步存储中获取的数据使用函数,因为其为null

  10. 10

    获取异步函数返回的数据

  11. 11

    Vue / Vuex使使函数异步从Firebase中获取数据的麻烦

  12. 12

    记忆使用异步Ajax获取其数据的Javascript函数

  13. 13

    Java中如何使用Jsoup获取函数数据的值

  14. 14

    如何使用异步函数异步侦听 Firestore 中的值?

  15. 15

    我如何使用芹菜(异步)从以前存在的数据中从 django 模型(数据库)中获取数据

  16. 16

    如何在Swift 3.0中使用url通过异步获取多个JSON数据

  17. 17

    如何在 Angular 6 中使用异步获取 JSON 对象中的数据集合?

  18. 18

    如何获取打字稿中异步函数的返回类型?

  19. 19

    如何等待异步函数中的获取响应?

  20. 20

    如何使用余烬数据如何分别获取异步子级?

  21. 21

    使用Omni Thread Library在Delphi中异步获取函数结果

  22. 22

    如何使用Reactivevar更新Meteor中的数据

  23. 23

    如何使用Jest测试异步函数中的函数参数

  24. 24

    如何在ANT D列中获取/呈现异步数据

  25. 25

    如何使用异步/等待从sqlite db.each获取数据

  26. 26

    如何从scrapy的后续函数中获取数据

  27. 27

    如何从scrapy的后续函数中获取数据

  28. 28

    如何使用Meteor.loginWithPassword()登录后创建异步函数以返回用户状态

  29. 29

    c# - 如何在c#中的非异步函数中使用await调用异步函数?

热门标签

归档