Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.12.2017, 16:20
Кандидат Javascript-наук
Отправить личное сообщение для zlodiak Посмотреть профиль Найти все сообщения от zlodiak
 
Регистрация: 24.02.2012
Сообщений: 104

Для одноразовой операции использовать promise или rx
У меня есть 2 варианта решения одной задачи. Скажите пожалуйста какой из способов правильнее и экономнее.

Способ 1:
В сервисе есть функция, которая создаёт запись в БД и возвращает её:
createQuestion_(question: Question): Promise<Question> {
  return new Promise((resolve, reject) => {
    this.httpClient.post('http://localhost:3000/questions', question)
      .subscribe((resp) => {
        resolve(resp);
      });
  });
}


в компоненте вызов её происходит так:
const question: Question = {
  author: authorizedUser.id,
  isDecided: false,
  isDeleted: false,
  tags: [],
  title: this.form.value.title,
  body: this.form.value.question,
  ratingPlus: [],
  ratingMinus: [],
  createdDateUnix: '' + Date.now()
};

this.questionsService.createQuestion_(question).then((resp) => {
  this.router.navigate(['/question/' + resp.id], {queryParams: {
    questionCreateNow: true
  }});
});



Способ 2:
Сервис:
createQuestion(question: Question): Observable<Question> {
    return this.httpClient.post('http://localhost:3000/questions', question);
  }



вызов из компонента:
this.questionsService.createQuestion(question).subscribe((resp) => {
	this.router.navigate(['/question/' + resp.id], {queryParams: {
	  questionCreateNow: true
	}});
});



Второй способ мне не нравится тем, что приходится для одноразовой операции использовать подписку на поток, которая будет действовать долгое время. Кроме того придётся писать код для отписки(unsubscribe()) при уничтожении компонента.

Первый способ логичнее потому что возвращает результат только один раз. Но минус его в том, что внутри промиса всё равно есть подписка на поток.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тернарные операции - да или нет animhotep Общие вопросы Javascript 14 24.01.2013 12:35
Где лучше выполнять арифметические операции? На клиенте или на сервере? Маэстро Общие вопросы Javascript 35 25.04.2012 18:13
нужна программа для этого. Чем писать? javascript или php? spam-server Серверные языки и технологии 3 27.08.2009 00:52
Аналог wmode=transparent для Canvas или svg lusever Events/DOM/Window 1 15.06.2009 16:05
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30