2016-11-08 7 views
1

私はJavascript/Typescriptを使用してPromiseを返し、PersonModelオブジェクトを返します。Javascript Promiseの混乱を約束する

PersonService.ts

private encryptPerson(person: PersonModel): Promise<PersonModel> { 
    return new Promise<PersonModel>(resolve => { // <== line 332 
     let password: string = person.password; 
     this.encrypt(password).then((ciphertext: string) => { 
      person.password = ciphertext; 
      resolve(person); 
     }); 
    }, 
     error => { 
      console.error(error) 
     }); 
} 

private encrypt(value: string): Promise<string> { 
    return new Promise<string>(resolve => { 
     this.encrypter.encrypt(value).then((result) => { 
      resolve(result); 
     }, 
      error => { 
       console.error(error) 
      }); 
    }); 
} 

エラー

ERROR in ./app/pages/service/personService.ts 
(332,16): error TS2346: Supplied parameters do not match any signature of call target. 

私は、これは感謝構築する方法の任意のヘルプ:しかし、私はビルドエラーを取得しています。 T.J.からのアドバイスの後

UPDATE

private encryptPerson(person: PersonModel): Promise<PersonModel> { 
    return new Promise<PersonModel>(resolve => { 
     let password: string = person.password; 
     this.encrypt(password).then((ciphertext: string) => { 
      person.password = ciphertext; 
      resolve(person); 
     }); 
    }); 
} 

private encrypt(value: string): Promise<string> { 
    return new Promise<string>(resolve => { 
     this.encrypter.encrypt(value).then((result: string) => { 
      resolve(result); 
     }); 
    }); 
} 
+1

あなたはcall targetに渡されたパラメータを使いこなしています。このエラーが発生した行を指定してください。 – Justinas

+0

@Justinas:少し隠されていますが、コードコメントに332行目が表示されています。 –

+0

@ジャスティナ、以下をご覧ください: '// <== line 332' – Richard

答えて

2

あなたはPromiseコンストラクタを呼び出している2つの引数で:

private encryptPerson(person: PersonModel): Promise<PersonModel> { 
    return new Promise<PersonModel>(resolve => { // <== line 332 
      let password: string = person.password; 
      this.encrypt(password).then((ciphertext: string) => { 
       person.password = ciphertext; 
       resolve(person); 
      }); 
     }, 
     error => {     // ** This is the 
      console.error(error) // ** second argument 
     });       // ** to the constructor 
} 

はそれだけで一つの引数を取り、以下のクラウダーが、私は以下の持っています。私は、第2の矢印機能が最初の矢印機能の内側のthenに接続されることを意図していると考えます。

別に、第2の機能がどこにあるのかが間違っている場合は、解像度値としてundefinedを使用して拒否を解像度に変換することに注意してください。 undefinedPersonModelではないので、私はそれも問題になると推測しています。