2

サインアップコールバックをObservableにするにはどうすればよいですか?Angular 2の規約に準拠していますか? bindNodeCallback:これは、コールバック構造はちょうどその目的のためにRxJS静的演算子がありAWSコグニートコールバックにObservableを使用する

userPool.signUp(this.artist.email, this.artist.password, attributeList, null, function(err, result) { 
    if (err) { 
    alert(err); 
    return; 
    } 
    let cognitoUser = result.user; 
    console.log(JSON.stringify(result)); 
    console.log('user name is ' + cognitoUser.getUsername()); 
}); 

答えて

3

どのようなものであるかです。 Node-styleコールバックAPIをObservableを返す関数に変換します。あなたはuserPoolsignUpをバインドするbindを呼び出す必要があります

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/bindNodeCallback'; 

let signInAsObservable = Observable.bindNodeCallback(
    userPool.signUp.bind(userPool) 
); 
let observable = signInAsObservable(
    this.artist.email, 
    this.artist.password, 
    attributeList, 
    null 
); 
observable.subscribe(
    result => { 
    let cognitoUser = result.user; 
    console.log(JSON.stringify(result)); 
    console.log('user name is ' + cognitoUser.getUsername()); 
    }, 
    error => alert(error) 
); 

注:

あなたはこのようにそれを使うだろう。

+0

:それは働いて試して以下のようなものを作るために

。私はコールバックを約束に変換し、fromPromiseメソッドで約束をオブザーバブルに変換できることを確認しました。 –

+0

あなたは私の人生を救った。 – AndreaM16

1

タイプを定義しなければバインディングは機能しません。どういうわけか、この方法が私のために動作しませんでした

register(user: RegistrationUser): Observable<any> { 
    let attributeList = []; 

    let dataEmail = { 
    Name: 'email', 
    Value: user.email 
    }; 
    let dataNickname = { 
    Name: 'nickname', 
    Value: user.name 
    }; 
    attributeList.push(new CognitoUserAttribute(dataEmail)); 
    attributeList.push(new CognitoUserAttribute(dataNickname)); 

    let signUp = Observable.bindNodeCallback<string, string, any[], any[], any>(this.userPool.signUp.bind(this.userPool)); 

    return signUp(user.email, user.password, attributeList, null); 
} 
関連する問題