我不应该在.then语句中调度动作吗?

时间:2018-11-04 20:31:02

标签: firebase react-native redux react-redux

我在git上找到了一个我想理解的代码,并且在代码中,这个家伙具有此功能:

export function startAddTodo(text) {
  return (dispatch, getState) => {
    const UID = firebase.auth().currentUser.uid;
    const todo = {
      text,
      isDone: false,
      isStarred: false
    };
    const todoRef = firebaseRef.child(`todos/${UID}`).push(todo);

    dispatch(addTodo({
      id: todoRef.key,
      ...todo
    }));

    todoRef.then(snapshot => {
      return;
    }, error => {
      Alert.alert(JSON.stringify(error.message));
    });
  };
}

为什么不应该像

const todoRef = firebaseRef.child(`todos/${UID}`).push(todo);

todoRef.then(snapshot => {

  dispatch(addTodo({
      id: snapshot.key,
      ...todo
    }));
})

我认为这是因为Promise可能会被拒绝,但是在第一个代码中,当他尝试在dispatch方法中调用todoRef.key时,他可能会出错。

0 个答案:

没有答案