/**
@module timers
**/
/**
Y.soon accepts a callback function. The callback function will be called
once in a future turn of the JavaScript event loop. If the function
requires a specific execution context or arguments, wrap it with Y.bind.
Y.soon returns an object with a cancel method. If the cancel method is
called before the callback function, the callback function won't be
called.
@method soon
@for YUI
@param {Function} callbackFunction
@return {Object} An object with a cancel method. If the cancel method is
called before the callback function, the callback function won't be
called.
**/
function soon(callbackFunction) {
var canceled;
soon._asynchronizer(function () {
// Some asynchronizers may provide their own cancellation
// methods such as clearImmediate or clearTimeout but some
// asynchronizers do not. For simplicity, cancellation is
// entirely handled here rather than wrapping the other methods.
// All asynchronizers are expected to always call this anonymous
// function.
if (!canceled) {
callbackFunction();
}
});
return {
cancel: function () {
canceled = 1;
}
};
}
soon._asynchronizer = asap;
soon._impl = 'asap';
Y.soon = soon;