Я новичок в React и Redux.
Я использую react-redux для вызова службы AWS Cognito, которая принимает объект, содержащий обратный вызов успеха и неудачи. Я получаю свой JWT от AWS Cognito, когда я console.log внутри своего обратного вызова успеха; однако как я могу yield put()
внутри этого обратного вызова, так как это не функция генератора (function*
).
Вот код:
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
, cognito выдает вам новый токен, улучшит ли ситуацию генератор? - person David Gilbertson   schedule 02.08.2016getAWSToken(yourCallback)
, а затем вызвать эту функцию внутриonSuccess
, напримерcallback(result)
. Но если есть какая-то специфическая дляredux-saga
причина для использования функций генератора, то я бы не хотел предлагать что-то, что нарушаетredux-saga
. - person David Gilbertson   schedule 02.08.2016yield
в обратном вызове? У тебя есть ошибка? Поскольку обратный вызов не является генератором, а вашgetAWSToken
, поэтому у вас не должно быть проблем сyield
здесь. - person Pierre Criulanscy   schedule 02.08.2016