功能不尊重关闭

问题描述 投票:0回答:1

我正在尝试为数组中的每个项执行一个函数,我知道关闭并通过使用ES6 let补偿这一点,并尝试使用forEach如下:

       this.tourIDS = [];
         this.tours.forEach(tour => {
         this.tourIDS.push(tour.tour_id);
       });

       this.tourIDS.forEach(id => {
         this.map.setFilter('routes', ['==', 'tour_id', id]);
           console.log(id);
       });

这是mapboxgl setFilter函数,它接受像这个['==', 'tour_id', id]这样的查询参数,这里的想法是为tourIDS数组传递一次包含它的每个id。所以预期的行为是在数组中的每个元素上执行函数,但只有数组中的最后一个元素被执行,就像没有关闭一样,但console.log(id)被正确记录每个元素,所以为什么console.log会工作和另一个功能不?

javascript arrays closures mapbox-gl-js
1个回答
0
投票

正如@Keith在他的评论中强调的那样,循环没有问题,但是mapbox-gl js setFilter本身的本质就是回想起这个函数会覆盖前面的过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.