Асинхронный вызов функции в Flex

Вы не можете запустить свое приложение в папке dist, когда находитесь в режиме разработки, потому что папка dist используется только для производственного режима

Настройки по умолчанию примерно такие

services.AddSpaStaticFiles(configuration =>
{
   configuration.RootPath = "ClientApp/dist";
});

app.UseSpa(spa =>
{
   spa.Options.SourcePath = "ClientApp";

   if (env.IsDevelopment())
   {
      spa.UseAngularCliServer(npmScript: "start");
   }
});

Чтобы запустить ваше приложение, вы должны создать папку в том же корне файла Startup.cs по умолчанию или файла ClientApp, как в вашем случае это libs, тогда это будет libs / client

Затем измените настройку

services.AddSpaStaticFiles(configuration =>
    {
       configuration.RootPath = "libs/client/dist";
    });

    app.UseSpa(spa =>
    {
       spa.Options.SourcePath = "libs/client";

       if (env.IsDevelopment())
       {
          spa.UseAngularCliServer(npmScript: "start");
       }
    });
[116 ] Обратите внимание, что вы можете запускать только одно угловое приложение с этим параметром, если вы хотите запустить другое угловое приложение, вам нужно вручную управлять им

15
задан Christophe Herreman 19 February 2009 в 07:57
поделиться

6 ответов

Actionscript не поддерживает многопоточность, которая я думаю, то, о чем Вы действительно спрашиваете здесь.

В то время как функциональность не является внутренней от actionscript (или Flex), Вы могли настроить ложное системное использование события и таймеры.

Я немного неясен по Вашему точному вопросу, таким образом, я дам два ответа:

1) Вы хотите обработать файл каждые несколько секунд для действия на любые изменения.

В этом случае все, что необходимо сделать, настраивается таймер для проверки файла периодически:

var fileTimer:Timer = new Timer(5000);
fileTimer.addEventListener(TimerEvent.TIMER, checkFile);

...

private function checkFile(event:TimerEvent):void {
  // read the file and do whatever you need to do.
}

2) Вы хотите проанализировать очень большой файл, но не хотите, чтобы приложение зависло при выполнении его.

Если бы Вы хотите обработать файл в фоновом режиме при сохранении главного приложения быстро реагирующим затем, я, вероятно, создал бы функцию, которая проанализирует несколько строк файла и затем отправит событие и возврат. Прислушайтесь к событию и запустите таймер, который ожидал бы несколько миллисекунд прежде, чем вызвать функцию снова для парсинга следующего набора строк.

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

Надежда, которая имеет смысл!

19
ответ дан 1 December 2019 в 01:24
поделиться

То, в чем Вы нуждаетесь, является понятием по имени потоки Green. Там существует зеленый lib поточной обработки, но я не использовал его.

Реализация, которую я сделал для процесса импорта (1 - 5 минут) на самом деле прослеженный, сколько времени выполнение брало и допускало настраиваемое количество времени на цикл. Это позволяет Вам выбирать количество кадров, которые Вы отбросили (мы просто обновляли модальный индикатор выполнения). Я также разделил его на подклассы с версией, которая пробежала ICollectionView с IViewCursor и исчерпала событие с каждым объектом.

Я не могу предоставить исходный код из-за, он - соединение с коммерческим продуктом, но понятие довольно просто реализовать.

3
ответ дан 1 December 2019 в 01:24
поделиться

Интересно, только вчера я описал решение этой проблемы в ответ на другой вопрос.

3
ответ дан 1 December 2019 в 01:24
поделиться

Самый простой ответ должен использовать callLater стандартная программа - видит некоторую документацию здесь.

callLater( parseFile, [filename] );

...

public function parseFile( filename : String ) : void
{
    // parse the file
}

Другой подход должен использовать setTimeout звоните, определенный в flash.utils пакет. Этот позволяет Вам назвать стандартную программу после того, как указанное количество времени передало. Используя эту стандартную программу, Вы могли настроить Ваш parseFile функционируйте для вызова неоднократно, давая Вам равные интервалы, которые Вы искали:

parseFile( filename );

...

public function parseFile( filename : String ) : void
{
    // parse the file

    // call this function again in 5 seconds
    setTimeout( parseFile, 5000, filename );
}
9
ответ дан 1 December 2019 в 01:24
поделиться

Существует также a setInterval функция, которая вызовет функцию равномерно, которая могла быть полезной.

1
ответ дан 1 December 2019 в 01:24
поделиться

setTimeout и setInterval оба удерживаются от использования.

Класс Таймера не только позволяет задержку, но также и repeatCount: сколько раз это бросит событие TIMER и начнет считать в обратном порядке снова. По-видимому, можно было бы назвать myTimer.stop () в событии прежде, чем сделать независимо от того, что Вы хотели сделать, и myTimer.start (), когда каждый был сделан.

private function newLinesToParse() : void
{
    myTimer = new Timer(30000, 9999);
    myTimer.addEventListener(Timer.TIMER, myTimerTick);
    myTimer.start(); 
}

private function myTimerTick(event : Event) : void
{
    myTimer.stop();    // or (event.currentTarget as Timer).stop();

    // do a few lines

    if (anyMoreLines)  
        myTimer.start();
    else
        myTimer = null;
}

Удачи

1
ответ дан 1 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

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