我正在尝试实现“更新密码”屏幕。我有两个服务调用功能,第一个是验证密码,它返回布尔值,第二个是更新密码。条件是,如果第一个服务响应为true,那么我想调用第二个服务。问题是,当我尝试在调用第二个服务调用之前获得第一个服务调用响应时,这些服务将在Submit函数结束后并行执行。因此,它们不会连续执行。
我尝试在render方法的不同函数中逐个调用这些Web服务,同时我添加了一个条件来检查第一个Web服务响应。如果从中获得响应数据,则调用第二个函数,该函数调用第二个Web服务。
render()
{
... // screen render method
..
<Button onPress={() => { this.submit(); }}>Change Password</Button>
}
//Here is the submit function:
submit() {
//first service call
this.props.validatePassword(param1, param2, param3, param4);
//reducer writes its value to "validatePass" in mapStateToProps
if (validatePass) { //boolean check
//second service call
this.props.updateStrongPassword(param1, param2, param3,
param4);
}
}
///
const mapStateToProps = function (state) {
const result = {
strongPasswordData: state.UpdateInformationReducer.strongPasswordData,
validatePass: state.UpdateInformationReducer.validatePass,
};
return result;
};
function bindAction(dispatch) {
return {
updateStrongPassword: (param1, param2, param3, param4) => dispatch(updateStrongPassword(param1, param2, param3, param4)),
validatePassword: (param1, param2, param3, param4) => dispatch(validatePassword(param1, param2, param3, param4)),
};
}
这些服务调用已成功执行,但没有连续执行。 完全没有错误。 预先非常感谢。
答案 0 :(得分:0)
如果您使用fetch
和Promises发出嵌套的网络请求,然后使用响应更新商店,该怎么办?
下面是一个简单的示例:
fetch("url").then(
firstResponse => firstResponse.json()
.then(fetch("anotherRequest")
.then(secondResponse => secondResponse.json()
.then(()=>{
// update your redux store here using firstResponse and secondReponse object.
}))
)
)
答案 1 :(得分:0)
您正在使用Redux,
进行检查和第二次API调用componentWillReceiveProps(){}(在旧的生命周期中)
在第一个API调用从componentWillReceiveProps进行检查并从那里进行第二个API调用之后,您将获得validatePassword值。
recyclerView.computeVerticalScrollOffset()
从按钮单击中删除第二个API调用,这是您的commit()函数
componentWillReceiveProps(props){
if (props.validatePass) {
this.props.updateStrongPassword(param1, param2, param3,
param4);
}
}