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