0
我從一個組件內部調用一個服務方法,它返回一個Promise。我想根據承諾是否得到解決或拒絕來做不同的事情。我做這樣的:在離子頁面返回Promise.reject
調用服務方法的功能
onAddProvider() {
this.userInteraction.addContact(data.email, 'bp').then(
successMessage => {
doSomething();
},
failureMessage => {
doSomethingElse();
});
}
服務方法
addContact(email: string, type: string) {
return new Promise((resolve, reject) => {
if (!email.match(patterns.email)) {
return Promise.reject('Bad email address');
}
let data = {
to: email,
from: this.dataStorage.data.id,
type: type,
date: new Date().getTime()
};
this.http.post(`${serverURL}action=sendAddRequest&token=${localStorage['token']}`, JSON.stringify(data))
.map((res: Response) => res.text())
.subscribe(response => {
resolve('Request sent');
});
});
}
我期待failureMessage
功能,當運行無極.reject返回,但是我卻在控制檯中得到這個錯誤:
EXCEPTION: Error: Uncaught (in promise): Bad email address
我已經試過了,但我得到了同樣的錯誤 –
@AlexandruPufan這是正確的答案,其實。你能用這種修正方法重新創建問題嗎? 'Promise.reject('錯誤的電子郵件地址')'創建未被捕獲的承諾,不會調用'reject','then'永遠不會被觸發。 「拒絕」是相反的(它不應該被退回)。 – estus
你說得對,我的錯誤是在其他地方 –