如何检查api调用是从javascript中的另一个方法完成的



我有一个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。

一个帮助将是非常可观的。

  1. 在onChangeHandler中,使用状态将其设置为加载

    const onChangeHandler = (): Promise<void> => {
    //payload value
    this.setState({isLoading: true})
    return apiCall(payload)(dispatch).then((res) => {
    if(response) {
    this.setState({isLoading: false})
    }    
    })
    }
    
  2. 在保存中:检查是否仍在加载或已加载

    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) {
    }    
    })
    }
    
  3. 如果你想要一种自动的方式:它继续检查加载的值是否发生了变化

    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)
    }
    

最新更新