score:2

Accepted answer

If by "continuously" you mean that you want to run the transition infinitely, use on("end") to call the transition function again.

Here is an example:

var toggle;

var data = [0, 1];

transition();

function transition() {
    toggle ^= 1;
    d3.select("circle")
        .transition()
        .duration(1000)
        .style("opacity", data[toggle])
        .on("end", transition);
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg>
	<circle cx="100" cy="100" r="50"></circle>
</svg>

score:0

I assume by continuously you mean smoothly transition rather than switch immediately from one opacity state to the next, as opposed to repeating the transition.

You first need to set an initial opacity on the circles when you create them:

.attr("opacity", 0)

And then use d3.selectAll rather than d3.select, or better your variable circles

...

circles
  .data(osc)
  .transition()                        
  .delay(function(d,i){ return i*1000; })
  .duration(1000)
  .attr("opacity",function(d){ return d[0] });

More Query from same tag