2017-10-16 11 views
0

私は、必要なときにのみカスタム約束を返す関数を記述しようとしています。コードは次のようになります。必要なときにのみカスタム約束を返す - 私は間違って何をしていますか?

login(sp: ServerProfile): Promise<any> { 
    return this.logout(sp) // first logout 
    .then(_ => { 
     if (this.isAuthEnabled(sp)) { 
      return this._login(sp) // if yes, re-login 
      .then(succ => { this.utils.debug(`Logged in with: ${succ}`); this._isLoggedIn = true; }) 
     } 
     else { 
      this._isLoggedIn = true; 
      return new Promise ((resolve, reject) => {resolve(true)}) //-> problem 

     } 

     }) 
    } 

は私がnew Promise (resolve, reject)で全体の機能をラップすることができます知っているが、私はそれが約束を返すよう不必要this._loginをラップする必要はありません。

私はelse{}一部でnew Promiseを追加した場合、私はこのエラーを取得:

[ts] Argument of type '(_: any) => Promise | Promise<{}>' is not assignable to parameter of type '(value: any) => void | PromiseLike'.

+0

<any>を指定することであると考えられますAngularを使用する場合は、_Promises_の代わりに** RxJS **を使用する必要があります。私はあなたのログインロジックが奇妙だと思っています。ユーザーが既にログインしている場合、何もしないで(またはリダイレクトするのではなく)ログアウトして再びログインしますか? – Mihailo

+0

"プロファイル"(パラメータ)が異なる可能性があるため、現在のセッションからログアウトして新しい資格情報でログインする必要があります。私は明らかにプロファイルを比較するためにその比較を入れませんでした。なぜなら、私のアプリでは、プロファイルが異なる場合(ログイン済みの場合のみ)にログインが呼び出されるからです。 – user1361529

答えて

0

ああ、ソリューションは、「あなたので手作りの約束

return new Promise <any>((resolve, reject) => {resolve(true)}) //-> no problem 
関連する問題