我有一个onChange文本处理程序,当文本字段值发生变化时,它会调用api。
const onChangeHandler = (): Promise<void> => {
//payload value
return apiCall(payload)(dispatch).then((res) => {
if(response) {
}
})
}
类似地,我有一个提交按钮,当用户点击按钮时会调用它。是否需要等待onChangeapi调用完成,然后调用save方法?
const onSave = (): Promise<void> => {
//wait for onchange api to complete and trigger save api call.
return apiSaveCall(payload)(dispatch).then((res) => {
if(response) {
}
})
}
我尝试过实现Promise,但由于两个api调用都发生在不同的方法中,我不得不再次调用onChange方法获取Promise。
一个帮助将是非常可观的。
-
在onChangeHandler中,使用状态将其设置为加载
const onChangeHandler = (): Promise<void> => { //payload value this.setState({isLoading: true}) return apiCall(payload)(dispatch).then((res) => { if(response) { this.setState({isLoading: false}) } }) }
-
在保存中:检查是否仍在加载或已加载
const onSave = (): Promise<void> => { if(this.state.isLoading){ alert("Wait") return } //wait for onchange api to complete and trigger save api call. return apiSaveCall(payload)(dispatch).then((res) => { if(response) { } }) }
-
如果你想要一种自动的方式:它继续检查加载的值是否发生了变化
const onSave = (): Promise<void> => { //wait for onchange api to complete and trigger save api call. let timer = window.setInterval(()=>{ if(this.state.isLoading === false){ window.clearInterval(timer) } apiSaveCall(payload)(dispatch).then((res) => { if(response) { } })}, 100) }