я не должен отправлять действие внутри оператора .then? - PullRequest
0 голосов
/ 04 ноября 2018

Я нашел код на 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
    }));
})

Я думаю, это потому, что обещание может быть отклонено, но в первом коде он может получить ошибку при попытке вызвать todoRef.key внутри метода dispatch.

...