私はReactとReduxの新機能です。成功コールバック内でコール・イールドput()
私はreact-reduxを使用して、成功と失敗のコールバックを含むオブジェクトを受け取るAWS Cognitoサービスを呼び出しています。 AWSのCognitoから私のJWTを取得します。しかし、それはジェネレータ関数(function*
)ではないので、どうすればこのコールバックの中にyield put()
を入れることができますか?ここで
は、いくつかのコードです:
export function* getAWSToken(){
// username, password and userPool come from react state
// not showing code for brevity.
const userData = {
Username: username,
Pool: userPool,
};
const authenticationData = {
Username : username,
Password : password,
};
const cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
const authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
// This here is the callback
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess(result){
yield put(cognitoTokenObtained(result.getIdToken().getJwtToken())
},
onFailure(err){}
});
}
なぜ発電機機能を使用するのですか? 'getAWSToken'を呼び出すたびに、あなたは新しいトークンを与えます、ジェネレータは物事を改善しますか? –
前に書いたように、私はReactとReduxの新機能ですので、例を示します。 redux-sagaが使用されているところでは、ジェネレータ関数が使用されているようです。そうでない場合は、お知らせください。 –
ええと、それは私にはあまりにも複雑なようです。通常の関数を使って、getAWSToken(yourCallback)のコールバックを渡し、 'onSuccess'の中でその関数を' callback(result) 'のように呼び出すことができます。しかし、ジェネレータ関数を使うための「還元サガ」の理由がある場合、「還元サガ」を壊すようなものを示唆したくはありません。 –