首页 > 解决方案 > 从 void 函数返回

问题描述

我有一个read()带有箭头函数作为参数的函数。如果我像这样实现该功能,则该值将按应有的方式显示在控制台中。

function(path: string) {
    this.db.read(path, val => {
      console.log(val.value)
    });
}

我的问题是,我怎样才能从这个函数中获得价值?

我尝试了几种返回方式,但没有任何效果。

//This is not working...
function(path: string) {
  newValue = this.db.read(path, val => {
      console.log(val.value)
      return val.value;
    });
  return newValue;
}

//Is working, but not really good...
private newValue;

function(path: string) {
  this.db.read(path, val => {
      console.log(val.value)
      this.newValue = val.value;
    });
  return this.newValue;
}

也许有人可以给我一个关于如何做到这一点的提示。

标签: angulartypescript

解决方案


试试这个方法。返回新的 Promise 而不是 val ,您将在未来某个时间获得。:

function readDb(path: string) {
  return new Promise(function(resolve, reject) {
    this.db.read(path, val => {
      resolve(val.value);
    });
  });
}
this.readDb("/path").then(function(val) { console.log(val) });

推荐阅读