|
|
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
Подскажите, уже просто сломали голову. Есть такой кусок скрипта: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. То есть смысл такой, что мы посылаем пост запрос скрипту, и если скрипт отвечает ноликом, то перегружаем страницу, на деле все оказывается так: выполняется сначала десять циклов, а после этого выполняется 10 раз функция done. Это хорошо видно под отладчиком. И соответственно уходит 10 запросов, хотя уже после первого обычно приходит нужный результат. Как сделать что-бы после первого успешного запроса, страница перегружалась? Пробовал отключить асинхронность, такая же фигня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 14:18 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983Подскажите, уже просто сломали голову.Надо было сначала учебник почитать, а не методом тыка голову ломать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 14:23 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
Вместо цикла нужен рекурсивные вызов POST запроса, если скрипт isRunning.php отвечает не ноликом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 14:27 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
skyANA, да спасибо.Сразу разобрался и все написал как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 14:56 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983, не за что, вот мой вариант, если что: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. Проверял тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:03 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
skyANA, у меня чуток попроще наверное получилось. Единственное нету проверки на количество обращений... Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Все верно??? При таком коде какие подводные камни могут встретится??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:09 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983, простите, но у Вас не проще. У Вас лапшекод и дублирование. Какие тут могут быть подводные камни? При таком стиле со временем код невозможно будет сопровождать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:14 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983skyANA, у меня чуток попроще наверное получилось. Единственное нету проверки на количество обращений... Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Все верно??? При таком коде какие подводные камни могут встретится??? Не знаю почему skyANA не понравился стиль написания... вроде нормально... только функцию isRunning надо переименовать, так как isSomething - это шаблонное имя для функций проверки на принадлежность чего-то к чему-то. Автоматически приходит ассоциация "наверное функция проверяет не запущено ли что-то". А ещё обязательно objectz сделать аргументом функции :) А то перенесёшь код, забудешь что так сделал и будешь потом отлаживать... ладно 5-10 строк, а если код разрастётся до 100-200? А ещё видишь как object подсветился... )) При большом количестве "неправильно" подсвеченного кода будет сложно в нём разобраться, потому такие ключи как object, Array, Boolean, instanceof лучше не использовать, или же использовать строго в кавычках (явно давая понять среде разработки что это строки). Из подводных камней - это рекурсивное зацикливание, а также сокрытие ошибки и попытка выдать её как штатный процесс ожидания выполнения операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:54 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
skyANA, и почему же 'лапшекод'??? и вообще что за манера? я культурно интересуюсь...и вместо того чтобы аргументированно ответить, Вы предпочитаете некультурно что-то ляпнуть...даже читать не интересно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:12 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
Програмёр, спасибо за совет. Вот нормальный, развернутый ответ...все понятно и ясно...не то что некоторые отвечают...(ясно в чей огород камень) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:13 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983skyANA, и почему же 'лапшекод'??? и вообще что за манера? я культурно интересуюсь...и вместо того чтобы аргументированно ответить, Вы предпочитаете некультурно что-то ляпнуть...даже читать не интересно...Почему не культурно? Я критикую код. Причём начинаю свою критику с "простите, но...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:36 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
skyANA, критика это хорошо, но обосновать то нужно как то?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:44 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
ПрограмёрА ещё видишь как object подсветилсяэто здешний баг подсветки кода 11696509 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:49 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983, Ваш код не структурирован. Вы используете анонимные обработчики вместо осмысленно названных методов. Это приведёт к тому, что код превратится в лапшу из вложенных в function() вызовов function() и сложно будет понять, а что он вообще делает. Сами обработчики "толстые", в них смешана работы с DOM и вызовы сервера. Причём весь код обрабочиков дублируется. Также Вы дублируете jQuery селекторы и смешиваете два подхода: использование JQuery селекторов и document.getElementById. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:55 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983skyANA, критика это хорошо, но обосновать то нужно как то??Я на обед ходил. Обосновал. P.S.: существуют статические анализаторы кода, например: JSLint. Советую воспользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:58 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
Также не понятно, зачем дёргается $.get(). Другой разработчик посмотрит, не поймёт и удалит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 17:07 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
skyANA, тот кто разрабатывает поймет, для чего дергается $.get ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 17:58 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
skyANA, и вообще, с первого взгляда, понятнее мой код, чем Ваш. Зачем столько функций? Каждая состоит из 2-3 строк. Картинку же нарисовали...действительно безумие. Конечно, если передавать это кому то другому, он не поймет ничего, но не из-за того что у меня как то не так написано, а из за того что создана библиотека для работы с ядром, а там действительно черт ногу сломит, но опять же не из за того что криво написано, а из зато того что продукт к которому пишется этот личный кабинет, нереально огромный и нереально сложный. В любом случае я учту то что Вы сказали. Спасибо за критику :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 18:03 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
skyANAunname1983, Ваш код не структурирован. Вы используете анонимные обработчики вместо осмысленно названных методов. Это приведёт к тому, что код превратится в лапшу из вложенных в function() вызовов function() и сложно будет понять, а что он вообще делает. Сами обработчики "толстые", в них смешана работы с DOM и вызовы сервера. Причём весь код обрабочиков дублируется. Также Вы дублируете jQuery селекторы и смешиваете два подхода: использование JQuery селекторов и document.getElementById. 1. Не согласен. Если обработчик востребован единожды, то намного удобнее его прописать прямо там, где требуется его выполнение. Исключение - очень длинные обработчики, но такое бывает очень редко и когда бывает, обычно случается так, что легче из обработчика вынести часть как отдельную функцию(-ии) 2. надо дёрнуть сервер, взять с него текст, по нему выбрать некий пункт в селекте, в зависимости от полученного текста дёрнуть другой сервер и полученным json'ом заполнить другой селект. Ну это к примеру. Получается надо как минимум 4 функции создавать? А я в этом коде вижу всего несколько строчек кода )) Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. я вот о чём... средняя длина функции не должна составлять 6 строк )) Иначе тогда просто создаётся дефрагментированность кода, и он становится менее понятный и явный. 3. Ну думаю автор создал дублированность кода или по неопытности или в спешке. понятное дело что этот код можно выделить в отдельную функцию, заменив вызовы типа $('#buttonArm') на this. Однако я привык делать немного иначе. Я всёровно создаю анонимную функцию, а саму логику размещаю в именованной, однако в эту именованную функцию я отправляю готовые аргументы. Другими словами само событие (event) я обрабатываю на месте, а вот все действия выполняю в соответствующем методе. Очень часто это является удобно и полезно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 18:05 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
Малыхин Сергей, гы, а картинка к чему? Намёк на то, что методы надо пересортировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 19:23 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
А, чёрт, не туда одну стрелку нарисовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 19:24 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983skyANA, тот кто разрабатывает поймет, для чего дергается $.getА, кстати, для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 19:27 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
ПрограмёрskyANAunname1983, Ваш код не структурирован. Вы используете анонимные обработчики вместо осмысленно названных методов. Это приведёт к тому, что код превратится в лапшу из вложенных в function() вызовов function() и сложно будет понять, а что он вообще делает. Сами обработчики "толстые", в них смешана работы с DOM и вызовы сервера. Причём весь код обрабочиков дублируется. Также Вы дублируете jQuery селекторы и смешиваете два подхода: использование JQuery селекторов и document.getElementById. 1. Не согласен. Если обработчик востребован единожды, то намного удобнее его прописать прямо там, где требуется его выполнение. Исключение - очень длинные обработчики, но такое бывает очень редко и когда бывает, обычно случается так, что легче из обработчика вынести часть как отдельную функцию(-ии)Но страница-то у нас не обязательно состоит из одной лишь кнопки и действия пользователя не заканчиваются лишь нажиманием оной Вон у автора блоком идёт подписка на клики по двум кнопкам. И получается жирный блок инициализации событий. И каждый раз чтобы посмотреть, что происходит по нажатию на такую-то кнопку, приходится этот блок перечитывать. Тогда как проще найти метод onЧтоТоТамClick. Особенно в IDE, потому как в IDE выводится список методов и можно быстро перейти к нужному. Програмёр2. надо дёрнуть сервер, взять с него текст, по нему выбрать некий пункт в селекте, в зависимости от полученного текста дёрнуть другой сервер и полученным json'ом заполнить другой селект. Ну это к примеру. Получается надо как минимум 4 функции создавать? А я в этом коде вижу всего несколько строчек кода )) Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. О, это яркий пример ниндзя кода. Мощные функции! . Програмёр3. Ну думаю автор создал дублированность кода или по неопытности или в спешке. понятное дело что этот код можно выделить в отдельную функцию, заменив вызовы типа $('#buttonArm') на this.У него не только селекторы дублируются, у него весь код обработчиков дублируется. P.S.: хотел бы я кстати знать, какой результат получится если нажать сначала на одну, а потом на другую кнопку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 19:46 |
|
||
|
асинхронность
|
|||
|---|---|---|---|
|
#18+
unname1983skyANA, и вообще, с первого взгляда, понятнее мой код, чем Ваш.Это сейчас Вам понятно, когда Вы его только что написали. А пройдёт полгода, Вам надо будет посмотреть (или кому-то другому), что происходит при нажатии на кнопку "Arm", и что Вы будете искать? Строку "$('#buttonArm').click(" в тексте? А я быстро перейду к методу onArmClick. А когда меня попросят изменить поведение, если произошла ошибка при запросе сервера (ну зачем его повторно опрашивать, нагружать, если он итак не может ответить), то я быстренько найду метод onAskServerError и поменяю его внутренности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 20:09 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38663915&tid=1447006]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 430ms |

| 0 / 0 |
