forEach pattern

by Artem

JavaScript

'use strict';

const data = [1, 2, 3, 4, 5];

function log(e, i, a) {
	if (e === 3) throw foreach.break;
  console.log(e);
}

function foreach(a, f, t) {
	try {
  	a.forEach(f)
  } catch(e) {
  	if (e === foreach.break) return;
    throw e;
  }
}

foreach.break = new Error('StopIteration');

foreach(data, log);