Javascript / Flash: когда именно запускаются внешние методы обратного вызова flash? - PullRequest
1 голос
/ 06 июня 2010

У меня есть флэш-приложение, использующее обратные вызовы для функций javascript (например, когда оно получает некоторые данные через сокет, оно вызывает скрипт js, который изменяет содержимое div в соответствии с данными).

Afaik, в javascript нет фактического взаимного исключения, поэтому я не уверен, могу ли я / нужно ли имитировать что-то вроде:

callbackFunc() {
lock(mutex1)
foo
unlock(mutex1)
}
...
someOtherFunc() {
lock(mutex1)
bar
unlock(mutex1)
}

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

1 Ответ

0 голосов
/ 07 июня 2010

После нескольких часов исследований я прочитал эту страницу, где увидел вопрос, довольно близкий к тому, что я задал.

Я хотел увидеть, что произойдет, если сокет будет получать данные быстрее, чем скрипт на стороне браузера (например, получать 2 запроса в секунду после получения того, какой браузер должен показывать и скрывать анимацию gif в течение полсекунды). не прерывая его) и если они попытаются изменить один и тот же массив, я провел несколько тестов.

В случае, когда несколько функций вставляют значения в массив, а одна выводит их (и очищает их интервалы, когда в указанном массиве слишком много данных), это работает так, как если бы браузер использовал метод fifo для обработки, когда выполнить эти функции (я не знаю, если разные браузеры обрабатывают это по-разному, я использовал Firefox и Opera): они не будут прерывать выполняемую функцию.

Кроме того, когда одновременно было вызвано две или более функций (например, с помощью setTimeout (..., 1000)), невозможно определить, какая из них будет вызываться следующей, поэтому я использовал некоторые простые переменные (например, логические) для их синхронизации.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...