Я бы пошел вторым или третьим путем. Между ними нет существенной разницы.
Мои рассуждения ...
Номер один обновляет поле, прежде чем вы узнаете, был ли запрос успешным или нет. Это отзывчиво с точки зрения пользовательского интерфейса, но не правильно, если запрос не выполнен.
Второй или третий способ показывает, был ли запрос успешным (позволяет отображать ошибку, если ее не было), и позволяет обновлять интерфейс без отдельного запроса. Третий способ может быть немного лучше, если значение, возвращаемое из запроса, будет большим и, следовательно, будет занимать ненужную полосу пропускания.