|
|
|
[IndexedDB] Asynchronous API
|
|||
|---|---|---|---|
|
#18+
Попробовал сие чудо враждебной техники (©) Что смутило: все построено на конструкции а-ля: Код: javascript 1. 2. 3. 4. И, вот, стОит, к примеру, на выделенной строке поставит breakpoint в debugger'е, пойти покурить и в обработчики мы уже никогда не попадем. Т.е., как я понял, все зиждется на уповании, что к моменту вызова обработчиков в потоке, рожденным в open, они уже будут установлены, сиречь на русском "авось"? Я, конечно, попробую поковырять mozilla-release\dom\indexedDB\*.*, но может кто скажет по этому поводу свое веское слово? _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 01:31:04 |
|
||
|
[IndexedDB] Asynchronous API
|
|||
|---|---|---|---|
|
#18+
Или я не понял твоего возмущения (следовательно, проблемы), либо ты сегодня устал и плохо понимаешь предмет ... Непосредственно с IndexedDB не знаком, но вот AsynchronousAPI - вещь крайне знакомая: кроме того, что вся событийная модель javascript на этом построена, так и еще Flash (ActionScript) базируется на этом. Суть и прелесть асинхронизма как раз и состоит в том, что инициатору события глубоко и сильно, поставил ты брекпоинт на хандлер или нет, да и на то, поставил ли ты сам хандлер на событие - это всего лишь обработка результата действия - события, но никак не самого действия, на которое повлиять так нельзя. Сам js - однопоточный, но работа браузера - нет, и этой базы тоже (головой ручаюсь), то есть остановкой своего скрипта ты не остановишь работу всего браузера и базы, только лишь своего потока обработки скрипта. Кстати, во флеше с этим дела обстоят лучше - он как бы двухпоточный - твой скрипт в одном потоке, а работа мувика в другом - так понимание процесса проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 04:30:22 |
|
||
|
[IndexedDB] Asynchronous API
|
|||
|---|---|---|---|
|
#18+
IDVsbruckя не понял твоего возмущения /me думает: гм... А я хотел изобразить недоумение... IDVsbruckчто инициатору события глубоко и сильно ... на то, поставил ли ты сам хандлер на событие Во-о-о-т! Весь API посторен на хандлерах , которые, в свою очередь, навешиваются на результат функции, которая, грубо говоря: рожает объект, возвращает его в основной поток, передает в рожденный ею поток, в котором дергаются хандлеры повешенные в основном потоке. На пальцах: для сравнения возьмем XHR Код: javascript 1. 2. 3. 4. 5. 6. IndexedDB Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и теперь, если представить, что поток, рожденный в open(), отработал быстрее и добрался до дерганья хандлеров, чем основной поток их инициализировал (DoSmth() выполняет что-то тяжелое) - получаем, что в хандлер мы уже не попадаем, со всеми вытекающими... Надеюсь я сейчас менее сумбурно изъяснялся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 10:58:34 |
|
||
|
[IndexedDB] Asynchronous API
|
|||
|---|---|---|---|
|
#18+
В догонку: если бы было ~ вот так: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. То никакого бы разрыва шалона (по крайней мере у меня ;) ) не происходило бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:11:54 |
|
||
|
[IndexedDB] Asynchronous API
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Код: javascript 1. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. onsuccess вызвался. брекпоинт немного по другому задерживает выполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:15:44 |
|
||
|
[IndexedDB] Asynchronous API
|
|||
|---|---|---|---|
|
#18+
Ex_Softи теперь, если представить, что поток, рожденный в open(), отработал быстрее и добрался до дерганья хандлеров, чем основной поток их инициализировал (DoSmth() выполняет что-то тяжелое) - получаем, что в хандлер мы уже не попадаем, со всеми вытекающими...на самом деле хандлер не вызывается напрямую из вспомогательного потока. Вспомогательный поток просто добавляет команду вызова в очередь сообщений основного потока (аналогично PostMessage из WinAPI). Т.е. хандлер отрабатывает в основном потоке, когда до него дойдет очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:20:31 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38031141&tid=1449139]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
205ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 553ms |

| 0 / 0 |
