簡體   English   中英

如何使用TypeScript返回正確的Promise

[英]How to return a proper Promise with TypeScript

所以我正在用打字稿學習Angular 2。

我到了要編寫一個模擬服務的地步(我相信),如果該服務成功獲得對象,則該服務應返回Promise;如果發生任何情況,則應返回錯誤。

我嘗試了以下代碼,但看起來它不是Typescript的寫語法。

更新了代碼:

saveMyClass(updatedMyClass: MyClass){
        //saving MyClass using http service
        //return the saved MyClass or error
        var savedMyClass : MyClass = someLogicThatReturnsTheSavedObject(updatedMyClass);
        if(isSomeCondition)
            return Promise.reject(new Error('No reason but to reject'));
        else
            return new Promise<MyClass>(resolve => {setTimeout( ()=>resolve(savedMyClass),1500  )}  );
    }

但是令我驚訝的是,打字稿抱怨“返回表達式之間不存在最佳的通用類型”。

正確的代碼應該是什么? 這樣,如果返回正確的MyClass,我就可以在組件上使用它,如果服務中存在任何錯誤,則可以反映錯誤。

謝謝

將整個函數體嵌入Promise構造函數中是一種好習慣,因此,如果發生任何錯誤,它將轉換為拒絕。 我相信,在這種情況下,它也解決了您的問題。

saveMyClass(updatedMyClass: MyClass) {
    return new Promise<Package>((resolve, reject) => {
        //saving MyClass using http service
        //return the saved MyClass or error
        var savedPackage : Package = updatedPackage;
        if (isSomeCondition) {
            throw new Error('No reason but to reject');
        }

        setTimeout( () => {
            resolve(savedPackage);
        }, 1500);
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM