Задать вопрос
  • Возможно ли вытащить скрипт из кода через инструмент разработчика?

    Aligatro
    @Aligatro
    slo_nik, возможно вы огласите сразу весь перечень вопросов которые не стоит задавать на ресурсе где -"можно получить ответ на вопрос по любой теме IT от..."?
  • Почему асинхронная функция работает иначе?

    Aligatro
    @Aligatro Автор вопроса
    0xD34F,
    После препарирования call stack'а в консоли и повторного прочтения материала event'ам, картинка вроде сложилась.

    Любая функция вызванная в основном потоке, будь то синхронная или возвращающая промис, будет этот самый поток блокировать до окончания её выполнения. Единственное что доступно разработчику, это возможность зашафлить стек вызова (например обернув в setTimeout) в котором сначала будут выполнены функции из основного потока, а после те которые придут из очереди событий от setTimeout.

    В итоге получается что результаты при использования loop'ов "появляются одновременно", потому-что всё это время идёт блокирующая обработка циклов в основном потоке.
    Во втором же примере setTimeout откладывает отправку простого объекта (а не исполнение блокирующего кода) плюс таймер крутится не в основном потоке, а в параллельном (webAPI). Что в итоге даёт эффект неблокирующего параллельного поведения.

    Единственное остаётся вопрос, на кой чёрт поверх простой и понятной модели событийно-ориентированного подхода (которым как я понял вся эта конструкция и является) нафигачили столько абстракции и запутывающих конструкций (разве что синтаксический сахар, не более).

    Еще раз спасибо за подробное разъяснение.
  • Почему асинхронная функция работает иначе?

    Aligatro
    @Aligatro Автор вопроса
    Ну смотрите, по идее, сам await является блокирующим и любой код после него должен исполнится только после обработки промиса await'ом.

    Но в коде ниже, при использовании timeout, вызов функции с await внутри не блокирует поток, более того промисы обрабатываются в правильно порядке (сначала скрипты основного потока, потом асинхронная функция с задержкой в 1сек, после в 4).

    // Исполняется после вызова лупа
    let loopAsync = ms => new Promise(resolve => setTimeout(resolve, ms * 1000));
    
    const getSomeTextAsync = async (text, time) =>
      `value - ${text} was showed with delay ${time} and while is ${await loopAsync(time)}`;
    
    const showTextAsync = async (sometext, time) => {
    	// блокирующий await
      sometext = await getSomeTextAsync(sometext, time);
      console.log(sometext);
    }
    
    // Основной поток
    showTextAsync('something that works in async way', 4); // 1 вызов функции с блокирующим авейтом внутри
    showTextAsync('something that works in async way', 1); // 2 вызов функции с  блокирующим авейтом внутри
    console.log('something that work in main thread');
    
    // console show
    // something that work in main thread
    // something that works in async way was showed with delay 1
    // something that works in async way was showed with delay 4
  • Почему асинхронная функция работает иначе?

    Aligatro
    @Aligatro Автор вопроса
    Большое спасибо за развернутый ответ и за то что пролили свет на ситуацию. Но в таком случае возникает вопрос, почему promisы от setTimeout выполняются последовательно при блокирующих awaitах (2 пример), причина в самой обёртке setTimeout?
  • Почему асинхронная функция работает иначе?

    Aligatro
    @Aligatro Автор вопроса
    С обёрткой они выполняются не блокируя основной поток, но всё равно вызов функции с большим количеством итераций отрабатывается раньше, а не наоборот.
  • Ecommerce с большим количеством товаров, можно ли выбрать woocommerce?

    Aligatro
    @Aligatro Автор вопроса
    sim3x, ответить сложно, проект только на стадии планирования. Я предполагаю, что высокого уровня нагрузки именно по количеству запросов не будет. Всё как в среднестатистическом интернет-магазине, условно по 100-200 человек онлайн и в районе 10-50 запросов в секунду (ну или сколько положено для такого онлайна).

    То есть основная проблема именно в скорости работы сайта с бд ввиду её размера.
    И да наверное я зря приплёл сюда highload.
  • Как привязать 2 домена для одного сайта без редиректа?

    Aligatro
    @Aligatro Автор вопроса
    Спасибо, если есть под рукой мануальчик подобной настройки для apache/nginx буду вам крайне признателен. Потому как признаться честно, я пока малость слаб в администрировании.
  • Как привязать 2 домена для одного сайта без редиректа?

    Aligatro
    @Aligatro Автор вопроса
    Шаред это не обязательное условие. Просто клиент хочет под один сайт два равноценных домена, а мне в голову сразу не пришло как это сделать, вот и предугадываю пожелания.
  • Почему иногда пропадает соединение wifi на Windows 10?

    Aligatro
    @Aligatro Автор вопроса
    За пару часов до вашего ответа сделал тоже самое, результат аналогичный.

    Спасибо =)
  • Как задать имя объекта, возвращаемого методом класса в es6?

    Aligatro
    @Aligatro Автор вопроса
    Антон Спирин, напротив вы всё правильно поняли, я хотел именно то, что вы изобразили в 3-м варианте.

    Логика примерно следующая, существует класс Person внутри которого находятся методы создающие объекты createPerson (createChild, etc.) + методы для манипуляции с созданным объектом (changeAge).

    class Person {
    		constructor(props) {
    		  Object.keys(props).forEach(key => this[key] = props[key]);
    		}
    	  
    		static createPerson(name, surname, age) {   
    			return new Person({ name: name, surname: surname, age: age });
    		}
    
    		changeAge(num) {
    			this.age = this.age + num;
    			return this;
    		}
    	}
    	
    	const NEWPERSON = Person.createPerson('Bill', 'Gates', 22);
    	console.log(NEWPERSON); // { name: 'Bill', surname: 'Gates', age: 22 }
    	console.log(NEWPERSON.changeAge(5)); // { name: 'Bill'', surname: 'Gates', age: 27 }

    После вызова метода createPerson (createChild/etc), на выходе я хочу получить экземпляр класса Person чтобы иметь возможность применить методы "манипуляции" к созданному объекту, взятые из класса Person. Пока всё хорошо и третий вариант полностью удовлетворяет требованиям (за что еще раз огромное спасибо).

    Но мне интересно можно ли использовать подобный код, не будет ли такой подход считаться bad-practice (быдлокодом проще говоря)?
  • Как задать имя объекта, возвращаемого методом класса в es6?

    Aligatro
    @Aligatro Автор вопроса
    Подскажите пожалуйста, вот такое рекурсивное создание экземпляров класса как показано в 3 варианте, это в целом адекватный подход или лучше избегать такого кода?

    Просто насколько я понимаю нельзя создать пустой экземпляр класса 'myClass', ему всегда необходим объект для конструктора (тоже касается и наследования). Или можно добавить что-то вроде проверки в самом конструкторе на наличие объекта (и если он отсутствует создавать пустой):

    class myClass {
      constructor(props) {
        if (typeof props == 'object') {
    	     Object.keys(props).forEach(key => this[key] = props[key]);
        }
      }
      
      static createSomeObj() {   
        return new myClass({ 1: 1, 2: 2 });
      }
    }
    
    
    const instance = new myClass();
  • Как задать имя объекта, возвращаемого методом класса в es6?

    Aligatro
    @Aligatro Автор вопроса
    Шикарный ответ, большое спасибо за потраченное время.
  • Как задать имя объекта, возвращаемого методом класса в es6?

    Aligatro
    @Aligatro Автор вопроса
    Алексей Уколов, не совсем корректно сформулировал. Имелось ввиду, что на выходе я хочу получить не просто объект, а экземпляр класса, в котором содержаться данные возвращаемые методом этого класса.
  • Как собрать проект при помощи webpack?

    Aligatro
    @Aligatro Автор вопроса
    Попробовал как вы и советовали (попутно пришлось переписать немного конфиг, ибо не крафтилось), но итог такой же. Большое спасибо за помощь =)
  • Как собрать проект при помощи webpack?

    Aligatro
    @Aligatro Автор вопроса
    Пробовал добавлять
    new webpack.optimize.UglifyJsPlugin({
      compress: false
    })

    не помогло.
  • Как собрать проект при помощи webpack?

    Aligatro
    @Aligatro Автор вопроса
    Спасибо большое, со сборкой вроде бы разобрался. Не могли бы вы пожалуйста подсказать как скрафтить библиотеку не минифицированной?
  • Нужно ли учить Bootstrap 4?

    Aligatro
    @Aligatro
    Stalker_RED, полагаю в 2018 уже начнётся постепенный переход. Даже сейчас это почти 85%, а при учёте как усиленно вендоры насаживают обновления браузеров, к концу года эта цифра подберётся к 90%. Еще какой-то год назад все только начинали экспериментировать с флексами, теперь это практически стандарт.
  • Восстановление сайта Wordpress?

    Aligatro
    @Aligatro
    zorca, Глупее ответа на тостере я еще не видел. Собственно что можно ожидать от бесполезного комментария, следующий!
  • Где найти визуальные примеры схем для прототипирования веб сайта?

    Aligatro
    @Aligatro Автор вопроса
    В целом вы правы конечно, но вопрос заключался в другом. Где найти фреймворк/kit/изображения иллюстрирующие схематичное отображение элементов (не готовые элементы). Текст в виде серой полоски, изображение в виде квадрата с иконкой, меню в виде черточек и т.д.