Merge pull request #1289 from johnnyreilly/master

jQuery:Added generic always/done/fail/progress
This commit is contained in:
Basarat Ali Syed
2013-11-20 03:16:15 -08:00
2 changed files with 25 additions and 1 deletions

View File

@@ -898,6 +898,18 @@ function test_dblclick() {
}
function test_deferred() {
function returnPromise(): JQueryPromise<(data: { MyString: string; MyNumber: number; }, textStatus: string, jqXHR: JQueryXHR) => any> {
return $.ajax("test.php");
}
var x = returnPromise();
x.done((data, textStatus, jqXHR) => {
var myNumber: number = data.MyNumber;
var myString: string = data.MyString;
var theTextStatus: string = textStatus;
var thejqXHR: JQueryXHR = jqXHR;
});
$.get("test.php").always(function () {
alert("$.get completed with success or error callback arguments");
});
@@ -2315,7 +2327,7 @@ function test_EventIsCallable() {
}
$.when($.ajax("/my/page.json")).then((a,b,c) => a.asdf); // is type JQueryPromise<any>
$.when("asdf", "jkl;").done(x => x.length, x=> x.length);
$.when("asdf", "jkl;").done((x,y) => x.length + y.length, (x,y) => x.length + y.length);
var f1 = $.when("fetch"); // Is type JQueryPromise<string>
var f2: JQueryPromise<string[]> = f1.then(s => [s, s]);

12
jquery/jquery.d.ts vendored
View File

@@ -94,6 +94,12 @@ interface JQueryGenericPromise<T> {
Interface for the JQuery promise, part of callbacks
*/
interface JQueryPromise<T> {
// Generic versions of callbacks
always(...alwaysCallbacks: T[]): JQueryPromise<T>;
done(...doneCallbacks: T[]): JQueryPromise<T>;
fail(...failCallbacks: T[]): JQueryPromise<T>;
progress(...progressCallbacks: T[]): JQueryPromise<T>;
always(...alwaysCallbacks: any[]): JQueryPromise<T>;
done(...doneCallbacks: any[]): JQueryPromise<T>;
fail(...failCallbacks: any[]): JQueryPromise<T>;
@@ -118,6 +124,12 @@ interface JQueryPromise<T> {
Interface for the JQuery deferred, part of callbacks
*/
interface JQueryDeferred<T> extends JQueryPromise<T> {
// Generic versions of callbacks
always(...alwaysCallbacks: T[]): JQueryDeferred<T>;
done(...doneCallbacks: T[]): JQueryDeferred<T>;
fail(...failCallbacks: T[]): JQueryDeferred<T>;
progress(...progressCallbacks: T[]): JQueryDeferred<T>;
always(...alwaysCallbacks: any[]): JQueryDeferred<T>;
done(...doneCallbacks: any[]): JQueryDeferred<T>;
fail(...failCallbacks: any[]): JQueryDeferred<T>;