繁体   English   中英

Angular 2从箭头函数返回数据

[英]Angular 2 return data from arrow function

我有以下代码

getEnquiryWithId(id: number) {
    let enquiryStore = this.db.transaction('enquiries', 'readonly').objectStore('enquiries');
    let index = enquiryStore.index('enquiries');
    let request = index.get(id);
    return request.onsuccess = (event) => {
      return event.target.result;
    }
  }

我试图在管道中使用

transform(value: number): string {
    let request = this.dbStore.getEnquiryWithId(value);
    let result = request();
  }

我收到一条错误消息,提示Cannot invoke an expression whose type lacks a call signature

注意:这里我不能依赖RxJs主题,因为我的转换函数需要返回一些东西,因为它是管道。 我该如何工作?

标题误导。 您不希望从箭头函数返回数据(这是很简单的),但是您希望同步执行箭头函数-这是不可能的,因为这是由JS引擎调用的回调。

正如其他人提到的那样,您可以在函数中返回一个Promise,一旦内部查询成功,该Promise就会解决:

getEnquiryWithId(id: number) {
  let enquiryStore = this.db.transaction('enquiries', 'readonly').objectStore('enquiries');
  let index = enquiryStore.index('enquiries');
  let request = index.get(id);
  return new Promise((resolve, reject) => {
    request.onsuccess = (event) => {
      resolve(event.target.result);
    };
    request.onerror = (event) => {
      reject(request.errorCode);
    };
  }
}

如果要显示承诺的结果,则可以简单地使用AsyncPipe 不必编写自己的转换函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM