Ответы пользователя по тегу JavaScript
  • Где посмотреть логи, если из-за сайта зависает браузер?

    Зайдите сюда chrome://inspect/#pages и нажмите "pause" на нужной вкладке (не открывая Dev Tools, оно итак откроется). После этого выполнение Javascript приостановится и будет запущен отладчик.
    Ответ написан
  • Для чего нужен bind?

    Вы что-то путаете. Пока ты не кликнул на квадрат, выводится Вася, а если кликнул, то Вова, т. е. всё правильно.

    Вероятно, Вам нужно учить JS. Что такое объекты, переменные, простые значения vs объекты и т. д. (а лучше вообще весь JS).

    Хотя по идее всегда должно выводиться "Вася", а не "Вова"

    Что за :) Учите JS.
    Ответ написан
  • Как работает % в js?

    Вы путаете операцию деления "/" и взятия остатка от деления "%".
    Ответ написан
    Комментировать
  • Async/await и правильность codestye?

    Первое что бросается в глаза — использованы пробелы вместо табов, это быдлокодерство (почему — гуглить по запросу "Tab indent space alignment"). Также после if нужен пробел.

    if (createUser(123, 123, 1, 123)) писать бессмысленно, т. к. функция createUser() всегда сразу же возвращает промис ещё до начала фактического выполнения функции. Только потом спустя функция начнёт выполняться, и в тот момент, когда выполнение дойдёт до return или throw, функция заполнит этот промис результатом или ошибкой. Т. е. суть в том, что async-функция — это функция, возвращающая промис. Раньше вам приходилось самому возвращать промис, а теперь функция возвращает его за вас. (PS. В реальности, если вдаваться в подробности, то на самом деле функция начнёт выполняться сразу же до первого await, но даже если await'ов не будет, возвращён будет всё-равно промис).

    Чтобы решить проблему, нужно либо написать createUser(123, 123, 1, 123).then(bool => { ... }), либо обернуть вызов функции в другую async-функцию, чтобы была возможность использовать await. Конечно же, такая обёртка тоже вернёт промис.

    Также нужно отметить, что try catch писать необязательно, вместо этого можно отловить ошибку прямо в указанной выше обёртке (или с помощью .then(value => {}, err => {})). Т. е. отловить ошибку рано или поздно придётся, но необязательно это делать в каждой функции — чаще всего достаточно один раз в конце.
    Ответ написан
  • Как вызывать скрипт каждые 30 минут?

    cron подойдёт для вызова любых скриптов, в т. ч. и node
    Ответ написан
    Комментировать
  • Почему после вызова промиса код не выполняется и процесс не умирает?

    Потому что Model.findOne() возвращает промис, который никогда не выполняется. В итоге оператор await ждёт этот промис вечно. Ну пусть ждёт, вдруг промис всё-таки когда-нибудь выполнится, и выполнение функции find() продолжится, а после него и скрипт завершится.
    Ответ написан
    2 комментария
  • Как найти учителя JS и Node.js?

    Если Вы не можете выучиться сами, возможно, это не Ваше. Выучиться самому очень легко, не надо думать, что это сложно. И нужно указать в вопросе, владеете ли Вы программированием и на каком уровне. Если не владеете, то для начала можно выбрать любой лёгкий язык (хотя js лёгкий), а потом изучить требуемые.
    Ответ написан
  • Регулярные выражения, использующие lookbehind, на языке JavaScript. Есть ли готовый код, решающий эту проблему раз и навсегда?

    Уже доступно со специальными флагами, скоро будет доступно везде.
    Ответ написан
    Комментировать
  • Java или Node.js для большого проекта?

    сложность/скорость разработки не так интересует

    Если сложность/скорость разработки не так интересует, могу посоветовать написать на ассемблере.
    Ответ написан
    Комментировать
  • Как добавить именно тот блок?

    1. Первый вариант (самый простой) — создать в programs.html блок <script id="tab_name" type="text/html">, загрузить programs.html с помощью $.get(...) и выпарсить содержимое блока, например, с помощью data.indexOf('<script id="tab_name" type="text/html">') и data.indexOf('</script>'). Есть и другие варианты парсинга (см. другие ответы). Требует CORS или одинаковый домен.

      PS. Блок <script type="text/html"> не будет выведен в programs.html при его прямом открытии. Также возможные ошибки синтаксиса внутри <script> не повлияют на корректность programs.html.

      Дополнительно: это не имеет отношения к вопросу, но описанный способ также удобен тем, что позволяет перед выводом обработать data с помощью шаблонизатора. Например, так можно 10 раз вывести <div>test</div> (синтаксис будет зависеть от шаблонизатора, который Вы выберете):
      <%for (var i = 0; i < 10; i++) {%> <div>test</div> <%}%>

    2. Второй вариант – подгрузить programs.html в качестве iframe и, используя postMessage, передать из programs.html содержимое #tab_name с помощью document.getElementById('tab_name').innerHTML. Не требует CORS. Это решение также можно совместить с шаблонизатором.

    3. Третий вариант — html-импорт, но он не поддерживается в старых браузерах habrahabr.ru/post/230751

    4. Четвёртый вариант — создать серверный скрипт, который будет парсить programs.html и выдавать ответ нужном формате, например JSONP. Не требует CORS. Можно совместить с шаблонизатором.
    Ответ написан