Javascript 如何重构那些非常相似的箭头函数?

Javascript 如何重构那些非常相似的箭头函数?,javascript,ecmascript-6,arrow-functions,Javascript,Ecmascript 6,Arrow Functions,我正在重构一个react文件中的一些代码,我有两个函数,它们几乎做相同的事情。。。但是一个返回一个函数,另一个执行一些代码 我现在不太擅长ES6和箭头功能。我不知道如何重构这个 switchEventSelectedSchedule = cb => option => { this.setState( // Mutate the state () => ({ eventSelected: option.id, i

我正在重构一个react文件中的一些代码,我有两个函数,它们几乎做相同的事情。。。但是一个返回一个函数,另一个执行一些代码

我现在不太擅长ES6和箭头功能。我不知道如何重构这个

 switchEventSelectedSchedule = cb => option => {
    this.setState(
      // Mutate the state
      () => ({
        eventSelected: option.id,
        isLoading: true
      }),
      // Callback to fire when the state has been mutated with the new event id
      async () => {
        await this.longPollingAllMatches();
        this.setState(() => ({
          isLoading: false
        }));
        const { currentRoundId, rounds } = this.state;
        cb(rounds, currentRoundId);
      }
    );
  };

  switchEventSelectedRoundTable = option => {
    this.setState(
      // Mutate the state
      () => ({
        eventSelected: option.id,
        isLoading: true
      }),
      // Callback to fire when the state has been mutated with the new event id
      async () => {
        await this.longPollingAllMatches();
        this.setState(() => ({
          isLoading: false
        }));
      }
    );
  };
在一种情况下,我需要返回cb函数,否则我必须只执行代码的其余部分

抱歉似乎很愚蠢,但我想我误解了ES6语法中的某些内容来实现这一点

很多thx

只需让switchEventSelectedRoundTable使用不执行任何操作的回调调用另一个函数即可。因为switchEventSelectedSchedule是,所以这很简单:

switchEventSelectedRoundTable = switchEventSelectedSchedule((rounds, currentRoundId) => {});

在这里,您可以尝试使用Babel将ES6转换为ES5:我不认为人们可以在不进行重大猜测的情况下帮助您,因为您没有解释当前代码应该完成什么,也没有显示调用上下文,也没有解释重构的目标是什么。我个人不喜欢switchEventSelectedSchedule=cb=>option=>{}这样的代码结构,因为它很难阅读,我们需要查看调用上下文才能了解它是如何使用的。@jfriend00我的答案中有没有遗漏什么?不知道为什么这个问题在投票中变得不清楚。@Bergi-好吧,这个问题对我们中的一些人来说并不清楚,我仍然不知道这个问题如何导致你的答案。所以,即使有人认为他们理解你给我的答案,我仍然不理解这个问题。对我来说,这是一个不明确的问题。不清楚是在旁观者的眼中,所以我想你能理解这一点是值得称赞的。我仍然不清楚。@jfriend00我知道OP想要重构这个工作代码,确实识别出代码重复,但不知道如何解决它。当然,清晰度是一个主观的衡量标准:-它帮了我很多!!!:非常感谢