0

Цель - получить переменную в джаваскрипте, выводя которую мы будем видеть количество репозиториев пользователя.

Код -

const repo_count = function get_count_public_repos() {
    fetch('https://api.github.com/users/serhii73').then(resp => resp.json()).then(jsonResult => {
        console.log(jsonResult['public_repos']);
        return jsonResult['public_repos'];
    })
}

let public_repos = repo_count()

Запускаем код - введите сюда описание изображения Проблема -
public_repos - пустая. Почему там нет цифры?
Как изменить код, чтобы количество репозиториев пользователя было в переменной?

Serhii
  • 456
  • у вас функция repo_count ничего не возвращает. И даже если бы что-то возвращала, то точно не то, что вам нужно, поскольку промисы асинхронны и вытащить "наружу" результат из них нельзя – smellyshovel Sep 10 '19 at 10:47
  • @smellyshovel и как в таком случае действовать? Если мне нужно число "покласть" в переменную? – Serhii Sep 10 '19 at 11:27
  • Работать с результатом выполнения промиса нужно в методе .then. Поэтому вы можете возвращать промис из функции, а .then навешивать на сам вызов: repo_count().then(...). Другой вариант - async-await (посмотрите ссылку выше, там в первом ответе Grundy первый же пример очень похож на ваш кейс). – smellyshovel Sep 10 '19 at 11:29
  • А именно вынести переменную, доступную внутри then за его пределы, увы не получится. Точнее, чисто технически, сделать это можно (замыкания), но ожидаемого результата это вам не принесет. Так что просто вешайте then на код верхнего уровня. Либо юзайте async/await, балго транспиляторы его уже понимают. – smellyshovel Sep 10 '19 at 11:31

0 Answers0