Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как отправить ajax запросы асинхронно?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Не это фигня, если в скрипте внутри ваших testFunc нет никакого механизма очереди, то браузер запускает всё запросы сразу. Однако в самом браузере есть внутренние ограничения на количество одновременных запросов: 2-8 на домен в зависимости от браузера (+может быть настроено), если запросов больше - они ставятся в очередь и могут отвалиться по таймауту.
    Если ваш сервер задерживает ответ, то это только его дело - в браузере все что запущены висят и ждут ответа.
    Ответ написан
    Комментировать
  • CORS ,как открыть файл на GitHub?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Никак. По крайней мере без вмешательства в потроха браузера с помощью какого-нить расширения.
    Запускайте локальный сервер или пакуйте в обычный скрипт какой-либо системой сборки.
    Ответ написан
    Комментировать
  • Как понять конструкцию Function.prototype.call.bind(unboundSlice)?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Для call this и должен быть всегда функцией. Это какбэ очевидно из Function.prototype.call: что значит call - встроенный метод любой функции.

    Обычно всё непонимание идёт от приписывания this каких-то мистических свойств, в то время как this - простая ссылка, отличающаяся от любой иной переменной только тем, что принимает значение в зависимости от способа вызова и больше ничем.

    Ничто не мешает иметь в this функцию:
    function foo(num){
      return num
    }
    function bar(num){
      return this(num);
    };
    console.log(bar.bind(foo)(99)) // 99


    выглядит примерно так . .
    Function.prototype.bind = function(contextObject){
            let funkToBind = this,
                 args = Array.prototype.slice.call(arguments,1)
            return funkToBind.apply( contextObject , args.concat(Array.prototype.slice.call( arguments )))
    } // упращение, сущности данной функции

    Не так, а скорее так(но тут не учитывается прототип):
    Function.prototype.bind = function(contextObject){
      let funkToBind = this,
          args = Array.prototype.slice.call(arguments,1)
      return function() {
    		return funkToBind.apply( contextObject , args.concat(Array.prototype.slice.call( arguments )))
      }
    }
    Ответ написан
    2 комментария
  • Почему не видит переменную в консоле?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Очевидно потому что webpack пакует модули внутри себя, так чтобы как можно меньше "мусорить" в глобал. Если вам нужно для целей отладки пошарить что-то в глобальную область - делайте это явно, через window.modal = ....
    В подакшн версии это уже, само собой, неприемлемо.
    Ответ написан
    Комментировать
  • Есть ли более производительная библиотека для отображения Карт и графиков чем Amcharts?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Мне нравятся echarts от китайских товарищей.
    Но на счёт производительности - только экспериментально смотреть.
    Ответ написан
    1 комментарий
  • Как во vue поместить один Layout в другой?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если используется vue-router, то в верхнем просто <router-view>, а в routes просто:
    {
      path: '/topLayout',
      component: 'topLayout',
      children: [
        {
          path: ':botlayout?',
          component: 'botlayout',
        },
      ]
    }
    Ответ написан
    1 комментарий
  • Вопрос: window.Event = new Vue() это только название или нечто большее?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    С точки зрения функционала - это просто глобальная переменная, в которую положили пустой экземпляр Vue, чтобы использовать встроенную в Vue возможность создавать и обрабатывать события, получая таким образом глобальную шину данных, которую можно задействовать для обмена событиями между несколькими компонентами.

    С точки зрения же выбора имени Event для глобально переменной - это провал и некомпетентность, потому что в window.Event лежит у нас собственно класс-родитель для всех javascript событий, который может использоваться сторонними библиотеками.
    Ответ написан
    2 комментария
  • Какое событие отвечает за наведение на блок но с заранее зажатой лкм?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Codepen работает не как надо. Там всегда срабатывает первый if и точно также на каждое движение.
    Следует использовать не .which, а .buttons.
    Следует использовать не mousemove, а mouseenter.
    Ответ написан
    Комментировать
  • Как использовать динамический импорт внешнего скрипта?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    publicPath

    Лично мне нравится фича __webpack_public_path__: с установкой динамически из document.currentScript можно вообще не париться где что будет лежать.
    Но если адреса меняться не будут, то статический publicPath конечно надёжнее.

    P.S. На всякий случай: если на одной странице используется несколько webpack-бандлов, следует не забыть установить каждому уникальную jsonpFunction иначе могут быть коллизии.
    Ответ написан
  • Как менять данные в зависимости от route в vue?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    const routes = [
      {
        path: '/:id/about-item/:id2',
        name: 'about-item',
        component: aboutItem,
      },{
        path: '/:id',
        name: 'item',
        component: home,
      }
    ]

    Нет смысла делать одно и тоже. Различать по route.params.
    Ответ написан
  • Порядок выполнения действий в выражении --i + i++?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    --i + i++ - это не атомарное выражение. Это (--i) + (i++) - как раз потому что приоритеты инкремента выше приоритетов сложения. Javascript не вычисляет ничего разом, он вычисляет всё пошагово слева направо. Приоритетность разбивается на токены не снизу вверх, а сверху-вниз. Если два подвыражения с более высоким приоритетом оказались после разбивки слева и справа, то левый выполняется первым, правый вторым, т.к. для выражения с низким приоритетом не важно насколько приоритет подвыражений выше - для него они равноправны.
    Никакого UB в отличие от С тут быть не может.
    Ответ написан
    4 комментария
  • Для чего при сортировке нужно учесть именно 0.5?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Не используйте это для шафла в продакшене вообще.
    1. Результат зависит от внутренней реализации сортировки в браузере и может быть совершенно не рандомным.
    2. Сортировка имеет гораздо большую сложность чем необходима для шафла.

    Используйте любой специальный алгоритм, например.
    Ответ написан
    Комментировать
  • Как остановить определенный скрипт?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если скрипты чужие - никак. Вы можете остановить все наличные интервалы и таймауты разом, но не запустить их обратно.
    Если скрипты ваши - предусмотрите это архитектурно и сделайте api для этого.
    Ответ написан
  • Integer в JavaScript?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Вся чувствительная математика в любом случае должна быть (продублирована) на сервере, а клиент и так обойдётся.
    Если прям нужно, то можно использовать math.js или любую иную подобную либу. Либо вручную нафигачить нужные вычисления с помощью BigInt и\или TypedArray.
    Ответ написан
    2 комментария
  • Как правильно собрать библиотеку NPM из ES6 классов?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Может быть там вообще не использовать ни Вебпак ни Бабель

    Да, это современное решение для модулей.)
    В package.json для точку входа указать не main, а module и дело с концом.
    Хотя вебпак много чего полезного ещё может делать, а вот бабель для библиотеки-модуля - лишнее.
    Но а родительский проект тогда поймет, что этот импорт нужно будет дополнительно транспилировать? В нем то бабель используется...

    Как настроишь бабель-лоадер в проекте, так и будет транспилировать. По умолчанию он транспилирует всё, и надо специально указывать exclude, чтоб не лез в node_modules.
    Если пользуетесь какими-то cli - для этого есть специальные настройки(transpileDependencies).
    Ответ написан
    Комментировать
  • Как правильно кодировать URl для сохранения файла в window-1251?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Сам по себе браузер не предоставляет средств для кодирования в какую-либо кодировку кроме utf-8 (хотя под капотом всё это, само собой, есть и в определённый момент такой функционал мог бы появиться, но был выпилен из стандарта, чтоб этим нацистам икалось).
    Тебе надо найти любую функцию "utf-8 to win1251" и кодировать текст вручную перед тем как класть в строку.
    Ответ написан
    Комментировать
  • Как динамически менять ширину и высоту контейнера в зависимости от контента с сохранением пропорций?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    К сожалению css\html так устроен, что только одно измерение динамически может зависеть от другого, так что это невозможно без скриптов.
    Ответ написан
    Комментировать
  • Как правильно трансформировать время?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Z на конце - это отсутствие часового пояса, что трактуется по стандарту UTC - всемирному координированному времени.
    По умолчанию же new Date() задаёт дату в часовом поясе системы. (у вас +3 - скорее всего MSK).
    Если нужно время именно в UTC - поменяйте:
    var newDate = new Date(yyyy, mm, dd, h, m, s);
    на:
    var newDate = new Date(Date.UTC(yyyy, mm, dd, h, m, s));

    Но скорее всего это вам не нужно.
    Ответ написан
    Комментировать
  • Почему Electronjs не видит экспорты после начала работы?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Пальцем в небо: попробуй в tsconfig module: esnext.
    Ответ написан
    Комментировать
  • Отмена подключения js/Замена Скрипта можно ли?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Нет не возможно. Потому что загруженный файл не "работает", он уже "отработал". Уберёте его вы или нет, разницы после этого никакой. Можно только бороться с последствиями сделанного кодом.
    Варианты по-лучше есть всегда, вопрос лишь в том что на самом деле вам нужно.
    Ответ написан
    Комментировать