YuzuJS/setImmediate

How about Promise?

Closed this issue · 1 comments

I don't use the lib but why don't you use promises?

Example:

window.setImmediate = function(f) {
	var args = Array.prototype.slice.call(arguments, 1);
	
	Promise.resolve().then(function() {
		f.apply(undefined, args);
	});
};

Or optimized version:

window.setImmediate = (function() {
	var resolvedPromise = Promise.resolve(0);
	
	return function(f) {
		for (var i = 1, args = []; i < arguments.length; i++) {
			args[i - 1] = arguments[i];
		}
		resolvedPromise.then(function(v) {
			switch (args.length) {
				case 0:  f(); break;
				case 1:  f(args[0]); break;
				case 2:  f(args[0], args[1]); break;
				case 3:  f(args[0], args[1], args[2]); break;
				default: f.apply(undefined, args); break;
			}
		});
	};
})();