• Всегда ли асинхронная функция возвращает промис?

    Robur
    @Robur
    Знаю больше чем это необходимо
    если описана как async то да.
    Если обычная функция то она работает как обычная функция и асинхронной вы её делаете руками тем или иным способом
    Ответ написан
    Комментировать
  • В чем отличие в выполнении асинхронных операций?

    Xuxicheta
    @Xuxicheta
    инженер
    1.
    Запускается fetchAPI1,
    ожидание завершения fetchAPI1,
    запускается fetchAPI2,
    ожидание завершения fetchAPI2

    2.
    Запускается fetchAPI1,
    запускается fetchAPI2,
    ожидание завершения fetchAPI1,
    ожидание завершения fetchAPI2.
    (Если fetchAPI2 завершился раньше, то промис request2 находится в состоянии fulfilled и await пройдет сразу же, в конце текущего евентлуп цикла )

    3.
    Запускается fetchAPI1,
    запускается fetchAPI2,
    ожидание завершения fetchAPI1 и fetchAPI1, возврат массива результатов fetchAPI1 и fetchAPI1.

    Разница между 2 и 3 совсем небольшая.
    Только все это можно переписать корректно так
    const fetchData = id => {
      return Promise.all([fetchAPI1(id), fetchAPI2(id)])
        .then(([response1, response2]) => ({response1, response2}));
    }
    Ответ написан
    1 комментарий
  • Как сделать редирект с https на http nginx?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Так и будет, пока не добавите конфиг с валидным сертификатом. С другой стороны - когда вы его добавите, отпадёт необходимость в этом дурацком редиректе, мвахахаха.
    Ответ написан
    Комментировать
  • В 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);
    });

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

    ЗЫЗЫЗЫ

    если все еще до сих пор не понятно, то просто дочитайте ваш учебный материал до конца
    Ответ написан
    Комментировать
  • Почему ошибка "Unexpected token ="?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    Это вообще сомнительное решение. Никогда, запомните, никогда(!) нельзя использовать eval, если вы не контролируете то, что туда придёт. Это открывает огромную дыру в безопасности. Да и сам способ выглядит как дикий костыль.

    Советую хранить все переменные не просто так, а как ключи какого-то объекта. Тогда обновление их не потребует вызова eval.
    Ответ написан
    2 комментария
  • Функция round() не работает, что делать?

    @deliro
    1. Сходи в среднюю школу, где тебе расскажут, что такое комплексные числа
    2. Прочитай книжку (любую) по программированию, где тебе расскажут, как работают float (а в данном случае два float — complex) в компухтерах
    3.
    In [2]: D = (11.180339887498949+0j)                                                                                                                                  
    
    In [3]: complex(round(D.real), round(D.imag))                                                                                                                        
    Out[3]: (11+0j)
    Ответ написан
    Комментировать
  • Как объяснить конструкцию return this?

    Xuxicheta
    @Xuxicheta
    инженер
    constructor работает как конструктор только в составе es6 класса.
    А у вас тут это просто обычная функция, если вы ничего из нее не возвращаете, то она ничего и не вернет.
    Т.е. вы создаете объект, присваиваете ему прототип Person и обращаетесь к свойству constructor этого объекта.
    В объекте такого свойства нет, ищется в цепочке прототипов, находится и вызывается функция на которую указывает One.__proto__.constructor

    А правильно будет так

    class Person {
      constructor(name,age) {
        this.name=name;
        this.age=age;
      }
    };
    
    var One = new Person("Alex", 32);


    другой вариант
    var Person = {
        constructor: function(name,age){
        this.name=name;
        this.age=age;
      }
    };
    
    var One = Object.create(new Person.constructor("Alex", 32));
    console.log(One.name);

    но в этом случае One будет иметь прототипом не Person, а новый объект, созданный через Person.constructor
    Ответ написан
    6 комментариев
  • Что вызывает эту ошибку и как её решить?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    SVG не HTML, это XML, поэтому все теги должны закрываться.
    <path d="*секрет*" />
    Ответ написан
    4 комментария
  • Почему for(;;); вешает процесс?

    rockon404
    @rockon404
    Frontend Developer
    Условие.
    Выражение, выполняющееся на каждой интерации цикла. Если выражение истинно, цикл выполняется. Условие не является обязательным. Если его нет, условие всегда считается истиной. Если выражение ложно, выполнение переходит к первому выражению, следующему за for.

    MDN: for
    Ответ написан
    Комментировать
  • Почему this ведет себя по разному при сравнении с числом?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Когда вы пытаетесь обратится к свойству/методу примитивного типа, он оборачивается в объект (Number, String и.т.д.), выполняется ваш метод или возвращается свойство, после чего объект удаляется. Поэтому в this у методов всегда будет ссылка на "объект обертка". Этот как
    let num = new Number(123);
    num === 123; // false
    num == 123; // true
    typeof num; // object

    UPD: в строгом режиме, this внутри метода будет примитивным типом number. Почему это так, пока не знаю, не могу найти в спецификации такого. Вероятно это потому, что в строгом режиме this не преобразуется автоматически (например в не строгом режиме, с null/undefined в глобальный объект). Пример
    // не строгий режим
    function func() {
    	console.warn(this);
    }
    
    func.call(100); // выведет [Number: 100] объект, т.е. есть преобразование

    строгий
    "use strict"
    
    function func() {
    	console.warn(this);
    }
    
    func.call(100); // выведет 100, примитивный number. т.е. преобразования нет


    Поэтому код и работает в вашей песочнице, т.к. там строгий режим включен по умолчанию.
    Ответ написан
    3 комментария
  • Почему удаляется элемент одного массива при удалении элемента в другом?

    Это базовые знания, объекты присваиваются по ссылке, простые типы по значению
    https://learn.javascript.ru/object-reference
    Ответ написан
    Комментировать
  • Можно ли при создании объекта использовать его же свойства?

    @FabiBoom
    Можно же просто запустить в консоли и проверить, что такое делать нельзя, и, если упрощенно объяснять, то:
    1) сперва у нас создается именно обьект (то что между { ... });
    2) если в свойстве указанно какое-то выражение (типо a+b, или obj.property) , то оно вычисляется и результат этого выражения становиться значениям этого свойства;
    3) допустим у нас есть что-то типо такого -
    let o = {
      x : 2,
      y : o.x,
    }

    Свойство x получает значение 2 и доходим до свойства y - видим там получения свойства x объекта o, но у нас еще нет переменной с именем o, что значит мы не просто не можем получить свойство объекта, а мы не нашли сам объект и в итоге получаем ReferenceError.
    4) Если у нас не было никаких ошибок и объект успешно создан и размещен в памяти, только тогда создается в нужной области видимости переменная, которой присваивается ссылка на наш объект и только тогда мы можем ссылаться на него за заданным именем.
    Ответ написан
    Комментировать
  • Почему можно написать в параметре функции id без точки?

    Decadal
    @Decadal
    Вам в функцию deleteTask передают id таски при удалении, а не объект таски. TaskId это просто имя параметра функции.
    Вероятно когда вы говорите что в task есть айди, смотрите в другой скоуп - на самом деле на момент работы функции передаётся все равно число (в месте вызова функции), и от того что вы переназвали параметр на task, туда не стал приходить обьект, а по прежнему приходит число
    Ответ написан
    Комментировать
  • Как упростить сравнение 4 чисел с помощью if?

    yellow79
    @yellow79
    Senior Software Engineer
    Складываешь чиселки в мапу, сет или что там есть в Си, далее если длина не равна числу входных чиселок, значит есть совпадения.
    Ответ написан
    1 комментарий
  • Как упростить сравнение 4 чисел с помощью if?

    delphinpro
    @delphinpro
    frontend developer
    $Maccив = ПолучитьМассивЧисел()
    ОтсортироватьМассив($Массив)
    $Врем = 0
    Цикл $Число Из $Массив
      Если $Число == $Врем То 
        Принт("Есть совпадение")
        ОстановитьЦикл
        ВыйтиИзПодпрограммы
      Иначе
        $Врем = $Число
    Ответ написан
    5 комментариев
  • Чем отличается обявление int* a от int *a в Си?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Ни чем не отличается. Пробельные символы допустимо ставить в любом месте, где они не разрывают ключевое слово, идентификатор или константу. Все варианты ниже полностью эквивалентны:
    int*a;
    int* a;
    int *a;
    int * a;

    Но есть некоторая тонкость. Если посмотреть на синтаксис объявления нескольких переменных:
    int * a, * b, c, * d, e; // a, b и d - указатели, c и e - числа

    то будет видно, что "звездочка" является скорее модификатором переменной, чем модификатором типа. Чтобы подчеркнуть этот факт, рекомендуется всегда писать "звездочку" около переменной. Такая привычка позволяет избежать глупых ошибок:
    int *a, *b; // нормально
    int* a, b;  // Ошибка: b кажется указателем, но на самом деле - число.

    А синтаксис у C простой.
    5c77e725c3f4a317612433.jpeg
    Ответ написан
    1 комментарий
  • Почему логический оператор в выражении возвращает вместо булевского значения строку?

    potapchino
    @potapchino
    Потому, что оператор && вычисляет слева направо каждый из своих операндов. Результат вычисление операнда приводится к булевому типу и если он true, переходит к вычислению следующего операнда. Операция повторяется до тех пор, пока результат вычисления очередного операнда не будет false, если это так, то возвращается результат вычисления данного операнда и цепочка обрывается.

    Все операнды истины, значит цепочка дойдет до конца и вернет 5
    1 && 2 && 3 && 4 && 5 // 5

    В цепочке есть ложный операнд, значит он и вернется, а цепочка вычислений на нем закончится
    1 && 2 && 0 && 4 && 5 // 0

    Цепочка завершится на том операнде для которого вы ответите отрицательно, последующие операнды не будут выполяться
    confirm(1) && confirm(2) && confirm(3)

    Для оператора || похожая картина. Отличие в том, что цепочка операндов будет выполняться до первого истинного операнда
    1 || 2 || 3 || 4 || 5 // 1
    0 || false || !!0 || 5 || true || !!1 //5

    Цепочка будет выполнятся до тех пор, пока вы не ответите истинно
    confirm(1) || confirm(2) || confirm(3)

    Т.е. по сути && и || не возвращают true или false. Они возвращают результат вычисления одного из своих операндов.
    Ответ написан
    Комментировать
  • В каком формате подключать шрифты?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    woff2 и woff и именно в таком порядке.
    Если вам не нужны древние версии браузеров
    Ответ написан
    5 комментариев
  • Не мэтчится регулярное выражение?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    А если изменить сам подход? Зачем парсить JSON регулярками?
    https://codepen.io/KorniloFF/pen/vbaLdM?editors=1011
    Ответ написан
    5 комментариев