• Мощный ноутбук для работы и игр?

    @anvaslist Автор вопроса
    LittleBob, Добрый день! Подскажите пожалуйста, допустим я взял ноутбук с дискретной видеокартой для игр и при этом мне приходится на нём помимо игр работать. То есть, другими словами, если для работы взять ноутбук с дискретной видеокартой? Это как вообще, чем-нибудь чревато? Или для работы без разницы какая именно видеокарта установлена?
  • Мощный ноутбук для работы и игр?

    @anvaslist Автор вопроса
    imko, На какую приблизительно сумму тогда опираться, подскажите? Или диапазон
  • Мощный ноутбук для работы и игр?

    @anvaslist Автор вопроса
    Спасибо вам!
  • Мощный ноутбук для работы и игр?

    @anvaslist Автор вопроса
    Спасибо! С ноутом удобнее, брать его с собой куда угодно, раскрывать и сразу пользоваться)
  • Как вывод в консоль дожидается выполнения async функции?

    @anvaslist Автор вопроса
    Rsa97, Смотри,
    async function func() {
      const response = await fetch('https://jsonplaceholder.typicode.com/users');
      return await response.json();
    }
    console.log(func());

    При таком коде async-функция возвращает промис, этот промис получает результат в виде массива, потому что после return у нас идёт await response.json(). Метод json тоже возвращает промис, результатом которого как раз и является этот самый массив. Оператор await дожидается, когда этот промис из json зарезолвится, потом получает его результат и отдаёт этот результат ключевому слову return. Async-функция видит, что после return идёт массив и поэтому резолвит возвращенный ею промис этим массивом.

    Но если у нас будет такой код:
    async function func() {
      return new Promise(resolve => resolve(1));
    }
    console.log(func());

    Оператора await здесь нет, поэтому в данном примере после return не число 1, а экземпляр промиса зарезолвленный. То есть вот теперь по сути async-функция должна зарезолвиться этим экземпляром, но в консоли почему-то всё равно [[PromiseResult]] - число 1. Почему? Типо у промисов под капотом видимо так устроено, что если в resolve(value), value - это промис, то созданный экземпляр промиса получает результат value, да?
  • Как вывод в консоль дожидается выполнения async функции?

    @anvaslist Автор вопроса
    Стоп, смотри, при данном коде выводится сразу в состоянии fulfilled:
    async function func() {
      setTimeout(() => {
        return 1;
      }, 1000);
    }
    console.log(func());


    А в своем вопросе я имел ввиду, что данный код:
    async function func() {
      const response = await fetch('https://jsonplaceholder.typicode.com/users');
      return await response.json();
    }
    console.log(func());


    По сути должен быть как этот:
    function fn() {
      setTimeout(() => {
        return 1;
      }, 1000);
    }
    console.log(fn());

    В консоли будет undefined. Так и во втором примере кода (в этом комменте) по сути тоже должен вернуться промис с fulfilled и с результатом undefined?
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, Нет, то, что ты написал - неверно. В общем, я понял, что в async/await ты слабо разбираешься. Сам я уже нашел куда более понятное объяснение, где человек умеет доступно изъясняться, а не давать бессмысленные ответы на вопросы, в которых не шарит. Всего доброго)
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA,
    Не нет, а да. Выведи в консоль переменную response и сам убедишься, что присваивается почему-то объект response.
    (async () => {
      const response = await fetch('https://jsonplaceholder.typicode.com/users');
      console.log(response);
    })();
  • Что по итогу возвращают функция fetch() и метод json()?

    @anvaslist Автор вопроса
    Дмитрий Беляев, я запустил, 0, 1, 2, 3 последовательно. Отталкиваясь от этого я всё равно не понимаю, как await вызывает then для возвращенного промиса из функции fetch и кладёт в переменную const response результат этого промиса, который возвращает then. То есть в переменную response по сути должен упасть промис, а не объект Response, потому что метод then возвращает промис?
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, ну вот смотри, ты написал:
    fetch('https://jsonplaceholder.typicode.com/users').then(response => {})

    При таком коде метод then возвращает промис, так значит в переменную const response по сути должен присвоиться промис, вместо объекта Response, верно? Но почему-то присваивается объект Response
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    Этот объект передаётся в resolve. Экземпляр промиса, который возвращает функция fetch резолвится этим объектом Response, но как ключевое слово await получает доступ к результату этого промиса, если к внутреннему недоступному свойству [[PromiseResult]] нельзя обратиться извне?
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, почему в обоих случаях значения? У тебя есть возможность мне дать конкретный развернутый ответ, каким именно образом ключевое слово await получает доступ к внутреннему недоступному свойству [[PromiseResult]] (к которому нельзя обратиться извне) возвращенного из функции fetch экземпляра Promise и добавляет его в переменную response? К этому свойству нельзя обратиться снаружи, поэтому как await получает значение этого свойства?
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, А возвращается почему-то объект Response, я вот об этом
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, Ну и?) Получается что в переменную response, даже с ключевым словом await по сути должен присвоиться экземпляр промиса, а не объект Response, верно?)
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, я знаю, что then не возвращает значение в переменную, then возвращает промис. Поэтому в переменную должен присвоиться промис.
    (async () => {
      const response = await fetch('https://jsonplaceholder.typicode.com/users');
    })();

    Ниже напишу, типо await под капотом:
    (async () => {
      const response = fetch('https://jsonplaceholder.typicode.com/users').then(response => ???);
    })();

    То есть вот этот then после fetch возвращает промис, так поэтому и в response должен упасть тоже промис, а не объект Response, не так ли?
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA,
    но логика та же

    Что "логика та же"? Что именно ты этим хочешь сказать? Приватное свойство - это свойство доступное внутри класса, понятное дело, что then имеет доступ к нему. Но суть в том, что за пределами класса значение этого свойства недоступно. Поэтому нельзя получить к нему доступ и вернуть его значение в переменную по сути, что скажешь?
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, приватные свойства доступны только внутри класса, что дальше?
  • Что по итогу возвращают функция fetch() и метод json()?

    @anvaslist Автор вопроса
    Дмитрий Беляев,
    await никак не использует возвращаемое методом then значение, он полагается только на значения переданные в колбэки, которые он создает

    Создает кто? await или then? Если await, то не понимаю, вы ведь сказали, что он вызывает метод then у того, что ему отдали, а не создает колбэк.
    Если Вы внимательно посмотрите на мой пример, у меня метод then вообще ничего не возвращает, однако пример работает.

    Вот здесь вообще не понял, у вас после await просто создается объект с таким же названным методом then и этот метод then вообще никак не вызывается у этого объекта, поэтому не пойму, как этот пример работает.
    Дмитрий, смотрите, еще раз... ключевое слово await вызывает then у того, что ему передали. Этому ключевому слову await передаётся промис из fetch:
    (async () => {
      const response = await fetch('https://jsonplaceholder.typicode.com/users');
    })();

    То есть, получается await делает:
    (async () => {
      const response = fetch('https://jsonplaceholder.typicode.com/users').then(response => ???);
      // расписал, типо await под капотом
    })();

    И вот что дальше? Этот then, который мы вызвали после fetch, точно также возвращает новый экземпляр промиса (чтобы мы могли дальше чейнить then), соотвественно в переменную response по сути должен присвоиться экземпляр промиса, а не объект Response?
  • Как именно await получает результат промиса?

    @anvaslist Автор вопроса
    WbICHA, Я знаю что это синт. сахар, я видел ваш ответ на свой прошлый вопрос. Но и в этом вопросе не понимаю, к чему я должен прийти, опираясь на приведенный вами пример кода? Я знаю что await синт. сахар для then, но я не понимаю, как await получается доступ к внутреннему недоступному свойству [[PromiseResult]]?