[英]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.