Java имеет собственную поддержку событий, подобных тому из C#?

Это может быть связано с тем, что функция уровня вашего провайдера (dataContextProvider) getData имеет то же пространство имен, что и ваша функция, которую вы импортируете из ../Api.

И затем я считаю, что когда следующая строка const data = await getData(); выполняется в блоке кода ниже, она на самом деле вызывает функцию провайдеров getData, вызывая тем самым цикл.

  async getData() {
      this.setState({ requestStatus: RequestStatus.RUNNING });
      try {
        const data = await getData();
        this.setState({ data, requestStatus: RequestStatus.INACTIVE });
      } catch (error) {
        this.setState({ requestStatus: RequestStatus.FAILED });
      }
    }
8
задан tucuxi 16 November 2012 в 12:06
поделиться

9 ответов

Как Вы уже заявили, можно сделать ту же самую вещь с publisher-subscriber/Observer шаблоном. Просто требуется немного больше работы, требующей беготни.

И не, Java не имеет собственной поддержки событий, как C# делает с делегатами.

15
ответ дан 5 December 2019 в 08:26
поделиться

Из того, что я помню Java (не работали с ним в> 6 месяцев), я не думаю, что существует крыло событий.NET. Ваш лучший выбор будет состоять в том, чтобы, вероятно, использовать шаблон издателя/подписчика. Довольно легко реализовать и довольно надежный.

1
ответ дан 5 December 2019 в 08:26
поделиться

Вы могли бы также хотеть смотреть на библиотеку EventBus с открытым исходным кодом, которая, наоборот к стандартному шаблону издателя/подписчика использует класс посредника (шина события) для сокращения плотного соединения, требуемого в шаблоне издателя/подписчика (где подписчики должны знать обо всех издателях для регистрации им, который является не всегда возможным и является часто громоздким).

Я использовал его в приложениях GUI, но это может иметь дело с любыми видами события.

0
ответ дан 5 December 2019 в 08:26
поделиться

Swing или AWT, которые являются Java инструментарии UI, оба события дескриптора - проверяют официальное учебное руководство по событию Swing для примеров. Необходимо будет записать UI в Swing, конечно, чтобы смочь зарегистрировать слушателей для этих событий.

0
ответ дан 5 December 2019 в 08:26
поделиться

Вам нужны потоки. GUI в Java имеет события, потому что существует специализированный поток для событий UI для диспетчеризации. Существует также что-то улица "Observer" и "Заметный" (это - вкус нейтральная версия слушателей события от материала GUI), но просто шаблон разработки...

-1
ответ дан 5 December 2019 в 08:26
поделиться

Подписываться/Публиковать механизм, предложенный другими здесь, позволит Вам реализовать синхронные события. Для асинхронных циклов событий (запускают и забывают) можно хотеть посмотреть на "агентов". Actor<A> состоит из обработчика для сообщений (события) типа A, а также стратегия поточной обработки выполнения обработчика. Это позволяет Вам сделать параллельную, асинхронную обработку событий как следующее:

public class EventExample {
  public static void main(String[] args) {
    while ((char c = System.in.read()) >= 0) {
      eventHandler.act(c);
    }
  }

  public static Actor<Character> eventHandler =
    Actor.actor(Strategy.simpleThreadStrategy(), new Effect<Character>() {
      public void e(Character c) {
        // Do something with c here.
      }
    });
}

Получите библиотеку агентов здесь. Посмотрите Javadoc здесь.

4
ответ дан 5 December 2019 в 08:26
поделиться

Я не хорошо осведомлен о C#, но Бобы Java, которые не являются компонентами UI, могут, конечно, уведомить Слушателей о Событиях использования изменений состояния:

http://java.sun.com/developer/onlineTraining/Beans/beans02/

Это было частью Бобовой спецификации Java, так как она сначала вышла. Отметьте дату на учебном руководстве: это - год изготовления вина 2000.

Источник и слушатель должны работать в той же JVM. Необходимо было бы использовать прокси для общения с чем-то работающим в другой JVM, но она могла быть сделана.

Я Погугленный для учебного руководства по событиям C# и найденный этим. Регистрация Java слушателей и увольнение свойства изменились, события напоминало о том, что я видел, когда я просмотрел учебное руководство C#. Я пропускал что-то важное? (Я признаю, что не читал глубоко - никакое время прямо сейчас.)

0
ответ дан 5 December 2019 в 08:26
поделиться

Нет никакой собственной поддержки в Java - необходимо будет реализовать Шаблон The Observer (иначе Subcribe/Publish). Его довольно прямое - не больше, чем дюжина строк кода.

0
ответ дан 5 December 2019 в 08:26
поделиться
Другие вопросы по тегам:

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