承诺和垃圾回收

时间:2019-06-04 06:39:44

标签: ecmascript-6 redux promise react-redux garbage-collection

我已经设置了一个带有react-redux的项目,并且在动作创建者中使用redux-thunk进行获取。这是我的重击示例:

   export const doPostRequest = id => {
     return (dispatch, getState) => {
          const { id : initiailId } = getState().currentSelection
          return api.post(id).then(response => {
             if (!isEqual(initialId, getState().currentSelection.id)){
                return;
             }
             dispatch(someOtherAction(id))
             return Promise.resolve(true)
          })
          .catch(err => {})
      }
}

如您所见,如果我的状态的currentSelection到接收响应时已更改,我想逃避doPostRequest。否则,我返回Promise.resolve(true),因此MyComponent中的onSubmit可以重置表单:

在组件(它是表单)内部,我对onSubmit具有以下要求:

class MyComponent extends React.PureComponent{

   onSubmit = id => {
       this.props.dispatch(doPostRequest(id))
          .then(shouldReset => shouldReset && resetForm())
   }

   render(){
       return <form onSubmit={this.onSubmit}>.....</form>
   }

}

在大多数情况下,当我真的不需要执行任何其他操作(除了获取值)时,即使返回了Promise,我也不会在thunk上执行Promise链,但是在postrequest是成功。

就GC而言,此实现是否足够好?如何收集承诺垃圾?如果我返回fetch()。then()而不进一步链接它,是否有问题?

0 个答案:

没有答案