LINUX.ORG.RU

JavaScript в многопоточной среде?


0

0

Есть некий класс на жабаскрипте, кой содержит такой метод:

getChildrensMap: function(item, onChilds){
    if(item._childs){
      onChilds(item._childs);
    } else {
      this._loadChilds(item, onChilds);
    }
  },

собственно, эта байда, работает асинхронно и так как блокировок в javascript немае, то встает вопрос, какбы заставить onChilds вызыватсья только после того как в _loadChilds произошла загрузка?

Собственно идеи по этому поводу есь, но хочется послушать мнения народа.

★★☆
Ответ на: комментарий от isden

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

isden ★★★★★
()
Ответ на: комментарий от isden

атомарность подписки на event как блюдется? т.е. вот в одном потоке кто-то подписыывается на event, в то время как другой все загрузил, послел event а тут еще не подписались...

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

> атомарность подписки на event как блюдется?

х/з, я жабаскрипт так глубоко не ковырял.

как индусовариант - можно ставить глобальную переменную :)

isden ★★★★★
()
Ответ на: комментарий от isden

омг, ты индус, там на item вешается объект в который добавляются callbacks когда загрузится список детишек, они все пучком вызываются. Вопрос остается, что с синхронизацией.

wfrr ★★☆
() автор топика
Ответ на: комментарий от Miguel

хз какой он (это завист от выпендрежа создателей движка бравзера), но события происходят асинхронно, скорее всего в одном потоке, но там всерано гемморойчика достаточно.

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

По-моему, там однопоточность чуть ли не в спеках была. Точно не помню, но, вроде, во всех браузерах так.

Miguel ★★★★★
()

Javascript однопоточен, как MS-DOS (не к ночи будет помянут), поэтому успокойся и не забивай себе мозги всякой фигней.

ЗЫ: С ajax, правда, есть кое-какие нюансы.

Deleted
()
Ответ на: комментарий от wfrr

>хз какой он (это завист от выпендрежа создателей движка бравзера), но события происходят асинхронно

иди лучше орешки пожуй

Deleted
()
Ответ на: комментарий от Deleted

ЗЫ: С ajax, правда, есть кое-какие нюансы.

Ты любишь сам с собой спорить я смотрю?

wfrr ★★☆
() автор топика
Ответ на: комментарий от Deleted

Ты уже чойто пожевал судя по твоим фееричным потсам.

wfrr ★★☆
() автор топика

afaiu web workers создают вполне себе многопточную среду. изменять dom они не могут, но могут передавать сообщение родителю, который будет этим заниматься.

хотя вроде кроме gecko-1.9.1 этого нигде нет.

volh ★★
()
Ответ на: комментарий от wfrr

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

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

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

на сервере тоже будет, но там можно юзать java.concurent.* и совокуплятся вволю.

wfrr ★★☆
() автор топика

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.