【问题标题】:Horizon/Ionic2 return a valueHorizo​​n/Ionic2 返回一个值
【发布时间】:2016-08-25 10:27:15
【问题描述】:

我想使用 Horizo​​n 从 Rethinkdb 返回一个值:

ionViewLoaded() {
  let exampleValue;
  exampleValue = this.getValue();

  console.log(exampleValue); // gives me "undefined"
}

getValue() {
   let hz = new Horizon({host: "localhost:3100"});
   hz.connect();
   let table = hz('values');

   table.find(1).fetch().subscribe((val) => {
     return val;
   });
}

我需要这个值在函数之外,然后我想编写简单的 if/else 语句(如果我在查询中这样做,那么我会得到奇怪的错误 - 视图正在重新加载超过 200 次......)。反正有没有返回这个值?

【问题讨论】:

    标签: ionic2 rethinkdb horizon


    【解决方案1】:

    每当您从数据库或 API 中检索某些内容时,您都应该使用此服务。这就是它的用途。

    继续您的问题,在这种情况下 exampleValue 未定义,因为 getValue 不会等待订阅在 table.find(1).fetch() 中触发,因此返回未定义。

    您可以做的是,返回 observable 并在您的 ionViewLoaded 中订阅它,或者在 getValue 中创建一个 Promise

    我将仅演示选项 #1。

    ionViewLoaded() {
      this.getValue().subscribe((exampleValue) => {
         console.log(exampleValue);
       });
    }
    
    getValue() {
       let hz = new Horizon({host: "localhost:3100"});
       hz.connect();
       let table = hz('values');
    
       return table.find(1).fetch();
    }
    

    【讨论】:

    • 谢谢!现在我明白了。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    相关资源
    最近更新 更多