2016-03-28 2 views
1

Когда сервер выдает ответ 401, я обрабатываю ошибку, запрашивая новый токен аутентификации, после чего мне нужно продолжить запрос, который на самом деле должен произойти. Поэтому я не могу получить доступ к методу класса как к области видимости, так как это не определено в ответе.Попытка отправить действие самостоятельно

;(function(){ 
    var someAction = { 
    addItem: function (entity, data) { 
       var that = this; /* this is undefined, out of scope */ 
       return function (dispatch) { 
        dispatch(apiActions.apiRequest(entity)); 

        return (ApiUtil.create(entity, data).then(function (response) { 
         dispatch(apiActions.apiResponse(entity)); 
         browserHistory.goBack(); 
        }, function (error) { 
         if (error.status == 401) { 
          ApiUtil.refreshSession().then(function (response) { 
           dispatch(that.addItem); /** unable to access that as i need to recall the same action after I get refresh token**/ 
          }); 
         } else { 
          dispatch(apiActions.apiResponse(entity)); 
         } 
        })); 
       } 
      } 
    } 
    })();   


    ;(function(){ 
    /* within react component i've invoked this method */ 
    this.props.actions.addItem('entity', some_entity); 

    var mapDispatchToProps = function (dispatch) { 
      return { 
       actions: bindActionCreators(_.assign({}, crudActions, apiActions), dispatch) 
      } 
     }; 
    module.exports = connect(mapStateToProps, mapDispatchToProps)(SomeComponent); 
    })(); 

Есть ли другие варианты в отношении этого сценария, я очень хочу послушать.

ответ

1

Вы можете послать такое же действие как раз

dispatch(someAction.addItem) 
Смежные вопросы