()=> async()=> {}是什么意思?

时间:2020-03-15 10:04:12

标签: ecmascript-6 redux redux-thunk

我对redux重击动作感到困惑:

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 个答案:

答案 0 :(得分:2)

它是一个返回另一个(异步)函数的函数。

忽略箭头功能和常规功能之间this的语义差异,用常规功能编写相同内容的更清晰方法可能是:

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

调用方将调用getChannels()并返回一个函数,然后也可以调用该函数。

const innerFunction = getChannels()
await innerFunction(dispatch, getState)

答案 1 :(得分:0)

subRunner: Runner<Options>

在某种程度上等于:

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

使用箭头功能(可更改function getChannels() { return async function() { } } 的用法)和getChannels是恒定的块级变量。