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