Ответ в 2019 году:
map.once ('styledata', loadTiles);// Слушатель будет вызван в первый раз, когда событие сработает после регистрации слушателя.
map.once('styledata', loadTiles); //The listener will be called first time the event fires after the listener is registered.
map.on("styledata", loadTiles); // will fire multiple 3 times, whenever style changed.
// event.stopPropagation(); does not work.
map.on("load", loadTiles); // only fire 1 time. but when you change base map, use below
map.setStyle('mapbox://styles/mapbox/' + layerId, {diff: false});
// on load event will not fire, which I need it fire to re-load geojson layer.
map.on("styledata" // works fine, but it fire 3 same event at same time, cause load 3 times geojson layer, cause other error when you load 3 times geojson layer at same time.