Horizon/Ionic2 return 一个值

Horizon/Ionic2 return a value

我想 return 使用 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 次...)。反正有return这个值吗?

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

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

您可以做的是,return 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();
}