使用可以在函数范围内访问的属性创建函数

时间:2018-03-07 21:13:45

标签: javascript ecmascript-6

我有一个功能:

const fetchMovies = (function (query) {
  const requestId = this.requestId(query)
  return dispatch => {
    dispatch(sendingRequest(requestId))
    return ajax.get(`/movies/search?q=${query}`)
      .then(res => {
        dispatch(receievedResponse(requestId))
        return dispatch(addMovies(res.data.movies))
      })
  }
}).bind({
  requestId: (query) => `fetchMoviesLoading-${query}`
})

这允许fetchMovies函数使requestId能够在其自身内调用。但是,requestId属性不能像这样访问:

fetchMovies.requestId === undefined // true

是否有一种简单/干净的方式来展示requestId

这看起来很乱:

const fetchMoviesContext = {
  requestId: (query) => `fetchMoviesLoading-${query}`
}

const fetchMovies = (function (query) {
  const requestId = this.requestId(query)
  return dispatch => {
    dispatch(sendingRequest(requestId))
    return ajax.get(`/movies/search?q=${query}`)
      .then(res => {
        dispatch(receievedResponse(requestId))
        return dispatch(addMovies(res.data.movies))
      })
  }
}).bind(fetchMoviesContext)
fetchMovies.requestId = fetchMoviesContext.requestId

1 个答案:

答案 0 :(得分:1)

只需使用

            validator := f.Addr().Interface().(Validator)

不要过度复杂化。