@vasIvas

$q, Promises или же task?

Во всех языках существуют библиотеки синхронных задач к которым я ужасно привык.
Типа -
first(/** создать объект и передать в него какие-то аргументы*/)
.then(/** получить объект полученный на предыдущем шаге и что-то с ним сделать*/)
.then(/**получить объект полученный на предыдущем шаге и что-то с ним сделать */)...

В js есть что-то подобное в виде Promises и Q, но я не могу понять, являются ли они полным эквивалентом того, о чем говорю я? То есть все примеры которые я когда либо встречал были приведены в контексте асинхронности но я так и не понял, заточены они специально для асинхронности или их можно вообще всегда-всегда использовать?
И если Promises и Q можно использовать в любом "контексте", то что будет лучше в контексте angular?

Если инфы мало, то вот конкретика. Предположим что у меня есть кнопка подписанная на событие click.
По событию я должен - изменить цвет, изменить прозрачность. Если я вынесу вызовы методов, которые будут это делать в хендлер, то получится жесткая связанность и невозможность добавлять что-то на этапе конфигурации. По этому я хочу сделать последовательное выполнение тасков, которые можно будет устанавливать на этапе конфигурации и в хендлере выполнять лишь task.execute().
Подойдет ли для этого Promises и Q?
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
промисы, awaitable, таски... все суть одного и тогоже - единоразовые операции. То есть для обработки периодических событий они не подходят. И да, в контексте ангуляра вы можете юзать любую реализацию поддерживающую then, он их сконвертит в свои промисы. В целом же лучше использовать либо нативные промисы, которые уже есть во всяких там хромах, либо $q ангуларовский.

то что вы описываете - event stream. для этого можно взять https://baconjs.github.io/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы