Skip to content

Instantly share code, notes, and snippets.

@xingrz
Created August 19, 2012 09:28
Show Gist options
  • Save xingrz/3393951 to your computer and use it in GitHub Desktop.
Save xingrz/3393951 to your computer and use it in GitHub Desktop.
Wind.Async.Binding.fromCallbackAndNext = (function(original) {
// return functionAsync(arg1, arg2, ..., AsyncMethod)
return (function() {
var asyncArgs = arguments; // (arg1, arg2, ..., AsyncMethod)
if (asyncArgs < 1) return;
var asyncMethod = asyncArgs[asyncArgs.length - 1];
// replace AsyncMethod with callback function
asyncArgs[asyncArgs.length - 1] = (function() {
var callbackArgs = arguments; // callback(result1, result2, ..., next)
var next = callbackArgs[callbackArgs.length - 1]; // next()
delete callbackArgs[callbackArgs.length - 1];
asyncMethod.apply(this, callbackArgs).addEventListener('complete', function() {
next(this.error);
}).start();
});
original.apply(this, asyncArgs); // apply original function
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment