lazy_den
@lazy_den
Студент, Yii разработчик

Объясните что происходит в этом участке JS кода?

const _products = [....]; 
let shop = {
    getProducts (cb) {
        setTimeout(() => cb(_products), 100)
    },
};

shop.getProducts(products => {
      commit('setProducts', products)
    })

Нужно получить список продуктов не понимаю как это все устроено.
Я так понимаю мы передаем в getProducts эту функцию
products => {
      commit('setProducts', products)
    }

и в эту функцию предается _products (константа) и там выполняется???
Это пример из Vuex'a.
Зачем это сделано?
Это только из за setTimeout чтобы отправить эту функцию в очередь?
В реальном примере нельзя просто return.
Очень трудно понять эту кучу колбеков передающихся из одной функции в другую. Есть может статьи какие нибудь? Это все из за асинхронности кода, и как перестроиться ?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 2
profesor08
@profesor08
Это сделано скорее всего для достижения асинхронности работы, просто в демонстрационных целях. Вместо того, чтоб делать ajax запрос на сервер, а до этого поднимать сервер, там используется таймаут, который работает с данными о продуктах. Лишь в целях демонстрации.
Ответ написан
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
В этом коде происходит следующее: shop.getProducts запустит мутацию setProducts через 100 мс. Тут создается имитация обращения к удаленному сервису.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы