2016-08-23 8 views
0

コンポーネントの中からサービスメソッドを呼び出すと、Promiseが返されます。私は、約束が解決されるか拒否されるかに基づいて、さまざまなことをしたい。ときの約束私は実行するfailureMessage機能を期待していたサービスメソッド返信Promise.reject in ionic page

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'); 
     }); 
    }); 
} 

onAddProvider() { 
    this.userInteraction.addContact(data.email, 'bp').then(
    successMessage => { 
     doSomething(); 
    }, 
    failureMessage => { 
     doSomethingElse(); 
    }); 
} 

サービスメソッドを呼び出します

機能:私はこのようにそれをやっています.rejectが返されますが、コンソールでこのエラーが発生します。

EXCEPTION: Error: Uncaught (in promise): Bad email address 

答えて

1

置き換えます

return reject('Bad email address'); 
+0

私はそれを試してみたが、私はこの@AlexandruPufan同じエラー –

+0

は、実際には、正しい答えです取得します。あなたはこの修正の問題をフィドル/プランクとして再現できますか? 'Promise.reject( '悪い電子メールアドレス')'は未知の約束を作成し、 'reject'を呼び出さず、' then'は決して解雇されません。 'reject'は反対です(返されるべきではありません)。 – estus

+0

あなたは正しいです、私の間違いはどこか他にありました –

0

return Promise.reject('Bad email address'); 

をまた、エラーを投げる拒否することができます。

throw "Error";