簡體   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