当前位置:  开发笔记 > 编程语言 > 正文

在map()之后只调用一次函数

如何解决《在map()之后只调用一次函数》经验,为你挑选了1个好方法。

我在Nodejs上遇到问题,我只需要调用一次函数 item.IS_RACING === 1

    _.map(recordsets, function(items) {
      return _.map(items, function(item) {
        if (item.IS_RACING === 1) {
          _this.getRacing();
        }
      });
    });

_this.getRacing();有条件的每次调用true,但如果有20个项目IS_RACING === 1,所以该函数_this.getRacing();将被调用20次.我需要类似的东西,一旦应用程序检测到第一个IS_RACING === 1出现时,然后_this.getRacing();只触发一次.

有什么建议?



1> StriplingWar..:

正如评论中Pointy指出的那样(抱歉),你真的不想用map()它来做这件事.

从如何向其他开发人员解释问题的角度考虑问题.

如果任何记录集中有一个赛车项目,我想打电话getRacing().

现在,编写代表您意图的代码.

var somethingIsRacing = _.some(recordsets, function(items) {
  return _.some(items, function(item) {
    return item.IS_RACING === 1;
  });
});
if(somethingIsRacing) {
  _this.getRacing();
}

此代码遵循称为命令查询分离的原则,您首先使用函数式编程查询查找所需信息,然后使用命令式编程样式执行具有副作用的操作.


我喜欢这个,因为它具有更好的语义含义,并且不依赖于副作用(而不是仅仅循环和设置一些外部标志).+1
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有