Что означает () => asyn c () => {}? - PullRequest
0 голосов
/ 15 марта 2020

Меня смущает это редукционное действие thunk:

import axios from 'axios';

export const GET_CHANNELS = 'GET_CHANNELS'

export const getChannels = () => async (dispatch, getState) => {
    const res = await axios.get('https://v-forum-api.bahdcasts.com/api/channels')
    dispatch({
        type: GET_CHANNELS,
        payload: res.data
    })
}

Что означает следующая конструкция?

const getChannels=()=>async()=>{}

Не могли бы вы предоставить ссылку на статью для этого выражения? Спасибо

Ответы [ 2 ]

2 голосов
/ 15 марта 2020

Эта функция возвращает другую (асинхронную c) функцию.

Игнорирование различий в семантике this между функциями со стрелками и обычными функциями, возможно более понятный способ написать то же самое с обычные функции будут:

const getChannels = function () {
  return async function (dispatch, getState) {
    // ...
  }
}

Вызывающий вызов вызовет getChannels() и вернет функцию, которая затем может быть вызвана.

const innerFunction = getChannels()
await innerFunction(dispatch, getState)
0 голосов
/ 15 марта 2020

const getChannels = () => async() => {}

как-то равно:

function getChannels() {
  return async function() {

  }
}

с использованием функций стрелок (что изменяет использование this) & getChannels - постоянная блочная переменная.

...