/** * Asynchronous programming helpers * * License: * This Source Code Form is subject to the terms of * the Mozilla Public License, v. 2.0. If a copy of * the MPL was not distributed with this file, You * can obtain one at http://mozilla.org/MPL/2.0/. * * Authors: * Vladimir Panteleev <vladimir@thecybershadow.net> */ module ae.utils.async; void asyncApply(T)(T[] arr, void delegate(T value, void delegate() next) f, void delegate() done = null) { size_t index = 0; void next() { if (index < arr.length) f(arr[index++], &next); else if (done) done(); } next(); }