Ответы пользователя по тегу JavaScript
  • Не стыковка в вопросе на тестовое задание яндекс contest?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    cost = l / (s > 28 ? 28 : s)
    Ответ написан
  • Как остановить выполнение функции с помощью clearTimeout?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем


    В данной задаче вам не нужно делать clearTimeout. Тут просто при counter>phrases.length не нужно запускать setTimeout(next, 2000);
    Все исправления внутри функции next()
    Ответ написан
    1 комментарий
  • Эта регулярка не запрещает ввод других символов, а как запретить?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    olya_097, еще раз здравствуйте. Ваш вопрос слегка не полон, поэтому попробую догадаться в чем дело.
    эта регулярка не запрещает ввод других символов

    Догадка: видимо Вы используете какую то библиотеку/плагин в котором можно задавать с помощью регулярки фильтр вводимых данных для полей вода типа input и textarea.
    Если это так, то хотелось бы узнать что это за библиотека/плагин и тогда возможно понять в чем причина.
    Если же Вы пользуетесь обычным input и/или textarea и при этом не используете никаких библиотек/плагинов, расширяющих их функционал, то скорее всего вы имеете небольшой самописный кусок js кода, который через регулярку проверяет введенный текст (или вводимый текст) и что то там дальше делает. Если это так, то хотелось бы увидеть этот кусок кода вместе с частью разметки, включающей в себя контролируемые кодом поля ввода и тогда, я уверен, мы сможем Вам помочь разобраться с решением Вашего вопроса.
    Ответ написан
    7 комментариев
  • Хорошее ли решение - для каждой страницы сайта писать JS в замыканиях?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Вынести из глобальной области видимости код, предназначеный для разового использования на отдельновзятой странице всегда хорошая идея, а вот наилучший способ, которым вы это будете делать будет зависеть от множества факторов, таких как общая архитектура приложения, частота посещения конкретной страницы и даже способа ее загрузки и отображения. Но в целом ДА, изолировать области видимости таких кусков кода является хорошей практикой, позволяющей избежать многих пикантных ситуаций)
    Ответ написан
    Комментировать
  • Как заставить все запросы ждать один промис?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Как подсказал Inviz Custos, очередь решит вашу проблему (если конечно правильно будет работать с дублирующими запросами и промисами)

    Вот простенький рабочий пример
    // внутри async function
    let quiz = global_quizzes[quiz_id];
    if(!quiz) {
        global_quizzes[quiz_id] = quiz = Chat_Quizzes.findById(quiz_id).exec();
    }
    
    if( quiz instanceof Promise ){
        global_quizzes[quiz_id] = quiz = await quiz;
    } 
    chat.quiz = quiz;


    PS: правда это не совсем очередь, но ваш global_quizzes в некоторой степени ее имитирует.
    Ответ написан
    2 комментария
  • Правильно ли я понимаю асинхронные сетевые запросы?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Нет, не совсем так.

    // getResource() это должна быть некая функчия, которая делает асинхронный запрос к серверу и возвращает thenable объект:
    // раз - https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve
    // два - https://ru.stackoverflow.com/questions/877248/%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-thenable-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82
    
    
    // тут мы запрашиваем обращаемся к серверу, при этом запрос может быть выполнен как очень быстро так и очень медленно а так же он может быть вообще не выполнен (зависит от загруженности сети, состояния и загруженности сервера)
    const promise = getResource()
    
    // тут мы конечно можем делать синхронные операции,но так как они синхронные,  то пока они не отработают выполнение кода дальше не двинется.
    
    // тут мы просто говорим, что ждем пока сделанный запрос на сервер не вернет данные  код, находящийся далее не исполнять. Начнет его исполнять только после получения данных, сколько бы запрос к серверу не длился (в разумных пределах конечно. Существуют различные таймауты на установку соединения, на ожидание ответа и т.д.). При этом пока исполнение кода в данном блоке находится как бы на паузе, интерпретатор может выполнять другие задачи имеющиеся в eventloop. Таким образом достигается стиль написания кода, похожий на синхронный но являющийся асинхронным.
    await promise
    Ответ написан
    9 комментариев
  • Как к каждому элементу массива прикрепить функцию?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Смотрите первый комментарий к вашему вопросу.
    Это будет работать потому что у вас i действует в области видимости вне тела цикла. А если ее объявить как let, то она будет доступна только в области видимости в которой объявленна (то есть в теле цикла) и каждую итерацию цикла будет создаваться новая i, значение которой сохраниться в добавляемой функции как замыкание.
    Ответ написан
    3 комментария
  • Как реализовать поиск по JSON?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    в этом вопросе Как найти общие подстроки в нескольких строках на JavaScript? есть несколько ответов, которые вам могут помочь решить вашу задачу.

    Так же существует такое понятие как fuzzy search (нечеткий поиск) и множество его реализаций на js
    Ответ написан
    Комментировать
  • Есть ли private, public, protected, static в JS?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Комментировать
  • Как сделать таймаут в цикле Map?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    я для похожих задач делал свой скромный костыль:
    пример
    // класс для очереди
    class Queue{
    	constructor(interval=1000) {
    		this.list = [];
    		setInterval(()=>{
    			const item = this.list.shift();
    			if( item && item.cb && typeof item.cb === "function" ){
    				item.cb(...item.params);
    			}
    		},interval);
    	}
    	addTask(cb, ...params){
    		this.list.push({cb:cb, params:params});
    	}
    }
    
    
    // экземпляр класса для очеред. устанавливаем интервал срабатывания 2 секунды
    const queue = new Queue(2000);
    
    // links - ваш мап
    links.forEach(b => {
    	// хз как вы используете b, в вашем коде это не показано
    	queue.addTask(()=>{
    		// но вы вполне можете использовать ваше b тут
    		fetchDonor();	
    	});
    });


    но данный вариант не гарантирует строгую очередность выполнения запросов. Могу легко показать, как сделать тоже самое, но с гарантией соблюдения последовательности вызовов, но для этого fetchDonor(); должен либо отдавать промис, либо принимать колбэк, который будет выполнятся по завершении работы fetchDonor();

    PS: исправил опечатку в коде
    Ответ написан
    Комментировать
  • Не работает else if, в чем проблема?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    else if (num < 0 && num > 10) {
    ...
    }

    данное условие на человеческом языке звучит так:
    если num меньше нуля и при этом num больше 10
    Чувствуете подвох? )))

    по идее должно быть так
    else if (num < 0 || num > 10) {
    ...
    }
    Ответ написан
    Комментировать
  • Оператор || проходится по всем значениям, или пока не найдёт хотябы одно true?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    До первого значения которое можно интерпретировать как true.

    тут интерпретатор остановится и не пойдёт дальше?

    Да
    Ответ написан
    2 комментария
  • Как сохранять изменения при перезагрузке страницы (vanilla JS)?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    можно хранить состояние в локалсторадже, вот пример для хранения состояния чекбоксов.


    По аналогии так можно хранить состояние чего угодно.

    Так-же можно хранить состояние в:
    1. IndexedDB
    2. В БД на своем сервере.
    3. В онлайн сервисах типа firebase
    4. В Cookie (если не очень много)
    5. Можно даже хранить состояние в таких сервисах как Pastebin, или любых других, позволяющих запостить сообщение/залить файл для длительного хранения без ввода капчи, но это уже изврат))))
    Ответ написан
    5 комментариев
  • Как мне построить следующую структуру?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    const users = [
      {
        id: '1',
        firstName: 'Марк',
        lastName: 'Визельман',
        email: 'mark@gmail.com'
      },
      {
        id: '2',
        firstName: 'Кирилл',
        lastName: 'Давсон',
        email: 'kirill@gmail.com'
      },
      {
        id: '3',
        firstName: 'Виктор',
        lastName: 'Ганеш',
        email: 'victor@gmail.com'
      }
    ]
    
    const usersList = users.map(item=>item.firstName+" "+item.lastName+" "+item.email);
    Ответ написан
    Комментировать
  • Есть ли range slider для длины ширины высоты?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Для ваших целей подойдет самый обычный слайдер - нативный range. Ниже демо:

    Ответ написан
  • Как из объекта достать поле так, чтобы оно удалилось из объекта?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    let obj = {a: 1, b: 2, c: 3};
    
    
    let zxc = {a:obj.a}; // достаем свойство
    delete obj.a // удаляем свойство
    
    
    console.log(obj) // { b: 2, c: 3 }
    console.log(zxc) // { a: 1 }
    Ответ написан
    Комментировать
  • Как на странице сайта загрузить .wrl для просмотра?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    да, это возможно, большинство современных webgl библиотек, таких как three.js и babilon.js имеют лоадеры для vrml
    вот демка сделаная на three.js
    а вот пример кода как это сделать
    Ответ написан
    Комментировать
  • В JS коде ошибка, Что не так?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    разбираем ваш код по шагам

    isMomHappy у вас false;
    var isMomHappy = false;

    соответственно эта часть условия у вас не выполняется
    if (isMomHappy) {...}

    а выполняется вот эта часть
    else {
      reject( new Error('mom is not happy') );
    }

    в которой вы самолично генерируете ошибку
    reject( new Error('mom is not happy') );

    так происходит потому, что вы не установили промису обработчик ошибки:
    willIGetNewPhone.catch(err=>{
       console.log(err.message);
    });


    ЗЫ

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

    ЗЫЗЫ

    Ну или попробуйте выполнить этот код:
    'use strict';
    var promise = new Promise((resolve,reject)=>{
       reject(new Error("провал"));
    });

    и этот код:
    'use strict';
    
    var promise = new Promise((resolve,reject)=>{
       reject(new Error("провал"));
    });
    
    promise.catch(err=>{
       console.log(err.message);
    });

    и сравните результат.

    ЗЫЗЫЗЫ

    если все еще до сих пор не понятно, то просто дочитайте ваш учебный материал до конца
    Ответ написан
    Комментировать
  • Есть у кого пример симуляции работы триггера или транзистора на JavaScript?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Да есть, триггеров, держите :)))

    для работы перетащите на лист элемент "да" и триггер (например "RS триггер") ну и соедините мышкой входы и выходы.

    полный цикл состояний RS триггера

    начальное состояние:
    5d0808686305f268992274.png

    подаем единицу на вход R (триггер меняет состояние на выходах)
    5d0808974078c051844689.png

    отключаем подачу единицы на вход R (триггер запомнил состояние)
    5d0808bf5068e012054170.png

    подаем единицу на вход S (триггер сбрасывается в исходное состояние)
    5d0808e469a9a278984876.png

    отключаем подачу единицы на вход S (триггер остается в исходном состояние)
    5d080908606b0109121150.png


    5d0809aaa32fc676268999.png
    Ответ написан
    6 комментариев
  • Какое событие нужно назначить чтобы верно выполнялась функция?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Вот рабочий вариант (правда заменил сам слайдер, так как ваш не отображался)


    если же править ваш вариант, то получится так:

    $( function() {
        $( "#slider-range-min" ).slider({
            range: "min",
            value: 500,
            step: 100,
            min: 0,
            max: 10000,
            slide: function( event, ui ) {
                $( "#amount" ).val( ui.value );
                document.getElementById('amount1').innerHTML=ui.value*3.3;
            }
        });
        $( "#amount" ).val( $( "#slider-range-min" ).slider( "value" ) );
    } );
    Ответ написан
    Комментировать