如何在不使用全局变量破坏服务价值的情况下为服务提供投入



在登录服务中,请求中的数据包含用户名和密码。转到登录服务后,角色信息将分配给数据。在else部分中向generateToken服务发出请求时,仍然需要使用用户名和密码,但数据变量已被压缩,现在包含角色信息。如何将数据变量中的用户名和密码传递给generateToken服务?我用全局变量做了下面的操作,但超时了。

如何将generateToken服务中的数据变量与全局变量一起使用而不超时?

handleSubmit(data)
{
localStorage.setItem("userEmail", data.email);
this.props.dispatch(dispatchItem("USER_EMAIL", data.email));
this.props.dispatch(
login(
data,
(data) => {
var userType = data.role;
var roleExist = false;
var roles = this.state.userType.split("|").filter((role) => role !== "");
for (let index = 0; index < roles.length; index++) {
if (userType.includes(roles[index])) {
roleExist = true;
break;
}
}
if (!roleExist) {
var notification = {
message: "You logged in from the wrong domain",
isError: true,
};
this.props.dispatch(dispatchItem("NOTIFICATION", notification));
} else {
this.props.dispatch(
generateToken(data, (data) => {
var loginAccessToken = data.token;
this.props.dispatch(dispatchItem("LOGIN_ACCESS_TOKEN", loginAccessToken));
}),
);
this.changeActivePopup("otp");
}
},
(data) => {},
),
);
}

如果我理解正确,只需重命名各种嵌套的data即可获得更好的名称。

  • 最外层的data可能是loginData
  • 下一个dataloginResponse,因为它在login的回调中
  • 最后一个datatokenResponse,因为它在generateToken的回调中
function handleSubmit(loginData)  {
localStorage.setItem('userEmail', loginData.email);
this.props.dispatch(dispatchItem('USER_EMAIL', loginData.email));
this.props.dispatch(
login(
loginData,
(loginResponse) => {
var userType = loginResponse.role;
var roleExist = false;
var roles = this.state.userType.split('|').filter((role) => role !== '');
for (let index = 0; index < roles.length; index++) {
if (userType.includes(roles[index])) {
roleExist = true;
break;
}
}
if (!roleExist) {
var notification = {
message: 'You logged in from the wrong domain',
isError: true,
};
this.props.dispatch(dispatchItem('NOTIFICATION', notification));
} else {
this.props.dispatch(
generateToken(loginResponse, (tokenResponse) => {
var loginAccessToken = tokenResponse.token;
this.props.dispatch(dispatchItem('LOGIN_ACCESS_TOKEN', loginAccessToken));
}),
);
this.changeActivePopup('otp');
}
},
() => {},
),
);
}

相关内容

最新更新