Interface PromiseBase<TR, TJ, TN, UR, UJ, UN, VR, VJ, VN, SR, SJ, SN>

This object provides a subset of the methods of the Deferred object (then, done, fail, always, pipe, progress, state and promise) to prevent users from changing the state of the Deferred.

<a href="https://api.jquery.com/Types/#Promise">https://api.jquery.com/Types/#Promise</a>

interface PromiseBase<TR, TJ, TN, UR, UJ, UN, VR, VJ, VN, SR, SJ, SN> {
    always(
        alwaysCallback: TypeOrArray<
            CallbackBase<TR | TJ, UR | UJ, VR | VJ, SR | SJ>,
        >,
        ...alwaysCallbacks: TypeOrArray<
            CallbackBase<TR | TJ, UR | UJ, VR | VJ, SR | SJ>,
        >[],
    ): this;
    catch<
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
    >(
        failFilter?:
            | null
            | (
                t: TJ,
                u: UJ,
                v: VJ,
                ...s: SJ[],
            ) =>
                | ARF
                | PromiseBase<
                    ARF,
                    AJF,
                    ANF,
                    BRF,
                    BJF,
                    BNF,
                    CRF,
                    CJF,
                    CNF,
                    RRF,
                    RJF,
                    RNF,
                >
                | Thenable<ARF>,
    ): PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>;
    done(
        doneCallback: TypeOrArray<CallbackBase<TR, UR, VR, SR>>,
        ...doneCallbacks: TypeOrArray<CallbackBase<TR, UR, VR, SR>>[],
    ): this;
    fail(
        failCallback: TypeOrArray<CallbackBase<TJ, UJ, VJ, SJ>>,
        ...failCallbacks: TypeOrArray<CallbackBase<TJ, UJ, VJ, SJ>>[],
    ): this;
    pipe<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | AJF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<AJF>,
        progressFilter: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<
        ARD
        | ARF
        | ARP,
        AJD | AJF | AJP,
        AND | ANF | ANP,
        BRD | BRF | BRP,
        BJD | BJF | BJP,
        BND | BNF | BNP,
        CRD | CRF | CRP,
        CJD | CJF | CJP,
        CND | CNF | CNP,
        RRD | RRF | RRP,
        RJD | RJF | RJP,
        RND | RNF | RNP,
    >;
    pipe<
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: null,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | AJF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<AJF>,
        progressFilter: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<
        ARF
        | ARP,
        AJF | AJP,
        ANF | ANP,
        BRF | BRP,
        BJF | BJP,
        BNF | BNP,
        CRF | CRP,
        CJF | CJP,
        CNF | CNP,
        RRF | RRP,
        RJF | RJP,
        RNF | RNP,
    >;
    pipe<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter: null,
        progressFilter: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<
        ARD
        | ARP,
        AJD | AJP,
        AND | ANP,
        BRD | BRP,
        BJD | BJP,
        BND | BNP,
        CRD | CRP,
        CJD | CJP,
        CND | CNP,
        RRD | RRP,
        RJD | RJP,
        RND | RNP,
    >;
    pipe<
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: null,
        failFilter: null,
        progressFilter?: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>;
    pipe<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | AJF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<AJF>,
        progressFilter?: null,
    ): PromiseBase<
        ARD
        | ARF,
        AJD | AJF,
        AND | ANF,
        BRD | BRF,
        BJD | BJF,
        BND | BNF,
        CRD | CRF,
        CJD | CJF,
        CND | CNF,
        RRD | RRF,
        RJD | RJF,
        RND | RNF,
    >;
    pipe<
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
    >(
        doneFilter: null,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | AJF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<AJF>,
        progressFilter?: null,
    ): PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>;
    pipe<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter?: null,
        progressFilter?: null,
    ): PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>;
    progress(
        progressCallback: TypeOrArray<CallbackBase<TN, UN, VN, SN>>,
        ...progressCallbacks: TypeOrArray<CallbackBase<TN, UN, VN, SN>>[],
    ): this;
    promise<TTarget extends object>(
        target: TTarget,
    ): PromiseBase<TR, TJ, TN, UR, UJ, UN, VR, VJ, VN, SR, SJ, SN> & TTarget;
    promise(): this;
    state(): "pending" | "rejected" | "resolved";
    then<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | ARF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<ARF>,
        progressFilter: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<
        ARD
        | ARF
        | ARP,
        AJD | AJF | AJP,
        AND | ANF | ANP,
        BRD | BRF | BRP,
        BJD | BJF | BJP,
        BND | BNF | BNP,
        CRD | CRF | CRP,
        CJD | CJF | CJP,
        CND | CNF | CNP,
        RRD | RRF | RRP,
        RJD | RJF | RJP,
        RND | RNF | RNP,
    >;
    then<
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: null,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | ARF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<ARF>,
        progressFilter: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<
        ARF
        | ARP,
        AJF | AJP,
        ANF | ANP,
        BRF | BRP,
        BJF | BJP,
        BNF | BNP,
        CRF | CRP,
        CJF | CJP,
        CNF | CNP,
        RRF | RRP,
        RJF | RJP,
        RNF | RNP,
    >;
    then<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter: null,
        progressFilter: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<
        ARD
        | ARP,
        AJD | AJP,
        AND | ANP,
        BRD | BRP,
        BJD | BJP,
        BND | BNP,
        CRD | CRP,
        CJD | CJP,
        CND | CNP,
        RRD | RRP,
        RJD | RJP,
        RND | RNP,
    >;
    then<
        ARP = never,
        AJP = never,
        ANP = never,
        BRP = never,
        BJP = never,
        BNP = never,
        CRP = never,
        CJP = never,
        CNP = never,
        RRP = never,
        RJP = never,
        RNP = never,
    >(
        doneFilter: null,
        failFilter: null,
        progressFilter?: (
            t: TN,
            u: UN,
            v: VN,
            ...s: SN[],
        ) =>
            | ANP
            | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
            | Thenable<ANP>,
    ): PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>;
    then<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | ARF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<ARF>,
        progressFilter?: null,
    ): PromiseBase<
        ARD
        | ARF,
        AJD | AJF,
        AND | ANF,
        BRD | BRF,
        BJD | BJF,
        BND | BNF,
        CRD | CRF,
        CJD | CJF,
        CND | CNF,
        RRD | RRF,
        RJD | RJF,
        RND | RNF,
    >;
    then<
        ARF = never,
        AJF = never,
        ANF = never,
        BRF = never,
        BJF = never,
        BNF = never,
        CRF = never,
        CJF = never,
        CNF = never,
        RRF = never,
        RJF = never,
        RNF = never,
    >(
        doneFilter: null,
        failFilter: (
            t: TJ,
            u: UJ,
            v: VJ,
            ...s: SJ[],
        ) =>
            | ARF
            | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
            | Thenable<ARF>,
        progressFilter?: null,
    ): PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>;
    then<
        ARD = never,
        AJD = never,
        AND = never,
        BRD = never,
        BJD = never,
        BND = never,
        CRD = never,
        CJD = never,
        CND = never,
        RRD = never,
        RJD = never,
        RND = never,
    >(
        doneFilter: (
            t: TR,
            u: UR,
            v: VR,
            ...s: SR[],
        ) =>
            | ARD
            | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
            | Thenable<ARD>,
        failFilter?: null,
        progressFilter?: null,
    ): PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>;
}

Type Parameters

  • TR
  • TJ
  • TN
  • UR
  • UJ
  • UN
  • VR
  • VJ
  • VN
  • SR
  • SJ
  • SN

Hierarchy (View Summary)

Methods

  • Add handlers to be called when the Deferred object is either resolved or rejected.

    Parameters

    Returns this

    <a href="https://api.jquery.com/deferred.always/">https://api.jquery.com/deferred.always/</a>

    1.6

    $.get( "test.php" ).always(function() {
    alert( "$.get completed with success or error callback arguments" );
    });
  • Add handlers to be called when the Deferred object is rejected.

    Type Parameters

    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never

    Parameters

    • OptionalfailFilter:
          | null
          | (
              t: TJ,
              u: UJ,
              v: VJ,
              ...s: SJ[],
          ) =>
              | ARF
              | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
              | Thenable<ARF>

      A function that is called when the Deferred is rejected.

    Returns PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>

    <a href="https://api.jquery.com/deferred.catch/">https://api.jquery.com/deferred.catch/</a>

    3.0

    $.get( "test.php" )
    .then( function() {
    alert( "$.get succeeded" );
    } )
    .catch( function() {
    alert( "$.get failed!" );
    } );
  • Add handlers to be called when the Deferred object is resolved.

    Parameters

    Returns this

    <a href="https://api.jquery.com/deferred.done/">https://api.jquery.com/deferred.done/</a>

    1.5

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>deferred.done demo</title>
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    </head>
    <body>

    <button>Go</button>
    <p>Ready...</p>

    <script>
    // 3 functions to call when the Deferred object is resolved
    function fn1() {
    $( "p" ).append( " 1 " );
    }
    function fn2() {
    $( "p" ).append( " 2 " );
    }
    function fn3( n ) {
    $( "p" ).append( n + " 3 " + n );
    }

    // Create a deferred object
    var dfd = $.Deferred();

    // Add handlers to be called when dfd is resolved
    dfd
    // .done() can take any number of functions or arrays of functions
    .done( [ fn1, fn2 ], fn3, [ fn2, fn1 ] )
    // We can chain done methods, too
    .done(function( n ) {
    $( "p" ).append( n + " we're done." );
    });

    // Resolve the Deferred object when the button is clicked
    $( "button" ).on( "click", function() {
    dfd.resolve( "and" );
    });
    </script>

    </body>
    </html>
  • Add handlers to be called when the Deferred object is rejected.

    Parameters

    Returns this

    <a href="https://api.jquery.com/deferred.fail/">https://api.jquery.com/deferred.fail/</a>

    1.5

    $.get( "test.php" )
    .done(function() {
    alert( "$.get succeeded" );
    })
    .fail(function() {
    alert( "$.get failed!" );
    });
  • Utility method to filter and/or chain Deferreds.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never
    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never
    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    Returns PromiseBase<
        ARD
        | ARF
        | ARP,
        AJD | AJF | AJP,
        AND | ANF | ANP,
        BRD | BRF | BRP,
        BJD | BJF | BJP,
        BND | BNF | BNP,
        CRD | CRF | CRP,
        CJD | CJF | CJP,
        CND | CNF | CNP,
        RRD | RRF | RRP,
        RJD | RJF | RJP,
        RND | RNF | RNP,
    >

    <a href="https://api.jquery.com/deferred.pipe/">https://api.jquery.com/deferred.pipe/</a>

    1.6

    1.7

    ​ Deprecated since 1.8. Use <a href="index.SDK.PromiseBase.html#then" class="tsd-kind-method">then</a>.

    Cause: The .pipe() method on a jQuery.Deferred object was deprecated as of jQuery 1.8, when the .then() method was changed to perform the same function.

    Solution: In most cases it is sufficient to change all occurrences of .pipe() to .then(). Ensure that you aren't relying on context/state propagation (e.g., using this) or synchronous callback invocation, which were dropped from .then() for Promises/A+ interoperability as of jQuery 3.0.

    var defer = $.Deferred(),
    filtered = defer.pipe( null, function( value ) {
    return value * 3;
    });

    defer.reject( 6 );
    filtered.fail(function( value ) {
    alert( "Value is ( 3*6 = ) 18: " + value );
    });
    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Utility method to filter and/or chain Deferreds.

    Type Parameters

    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never
    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    Returns PromiseBase<
        ARF
        | ARP,
        AJF | AJP,
        ANF | ANP,
        BRF | BRP,
        BJF | BJP,
        BNF | BNP,
        CRF | CRP,
        CJF | CJP,
        CNF | CNP,
        RRF | RRP,
        RJF | RJP,
        RNF | RNP,
    >

    <a href="https://api.jquery.com/deferred.pipe/">https://api.jquery.com/deferred.pipe/</a>

    1.6

    1.7

    ​ Deprecated since 1.8. Use <a href="index.SDK.PromiseBase.html#then" class="tsd-kind-method">then</a>.

    Cause: The .pipe() method on a jQuery.Deferred object was deprecated as of jQuery 1.8, when the .then() method was changed to perform the same function.

    Solution: In most cases it is sufficient to change all occurrences of .pipe() to .then(). Ensure that you aren't relying on context/state propagation (e.g., using this) or synchronous callback invocation, which were dropped from .then() for Promises/A+ interoperability as of jQuery 3.0.

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Utility method to filter and/or chain Deferreds.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never
    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    Returns PromiseBase<
        ARD
        | ARP,
        AJD | AJP,
        AND | ANP,
        BRD | BRP,
        BJD | BJP,
        BND | BNP,
        CRD | CRP,
        CJD | CJP,
        CND | CNP,
        RRD | RRP,
        RJD | RJP,
        RND | RNP,
    >

    <a href="https://api.jquery.com/deferred.pipe/">https://api.jquery.com/deferred.pipe/</a>

    1.6

    1.7

    ​ Deprecated since 1.8. Use <a href="index.SDK.PromiseBase.html#then" class="tsd-kind-method">then</a>.

    Cause: The .pipe() method on a jQuery.Deferred object was deprecated as of jQuery 1.8, when the .then() method was changed to perform the same function.

    Solution: In most cases it is sufficient to change all occurrences of .pipe() to .then(). Ensure that you aren't relying on context/state propagation (e.g., using this) or synchronous callback invocation, which were dropped from .then() for Promises/A+ interoperability as of jQuery 3.0.

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Utility method to filter and/or chain Deferreds.

    Type Parameters

    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    • doneFilter: null

      An optional function that is called when the Deferred is resolved.

    • failFilter: null

      An optional function that is called when the Deferred is rejected.

    • OptionalprogressFilter: (
          t: TN,
          u: UN,
          v: VN,
          ...s: SN[],
      ) =>
          | ANP
          | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
          | Thenable<ANP>

      An optional function that is called when progress notifications are sent to the Deferred.

    Returns PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>

    <a href="https://api.jquery.com/deferred.pipe/">https://api.jquery.com/deferred.pipe/</a>

    1.6

    1.7

    ​ Deprecated since 1.8. Use <a href="index.SDK.PromiseBase.html#then" class="tsd-kind-method">then</a>.

    Cause: The .pipe() method on a jQuery.Deferred object was deprecated as of jQuery 1.8, when the .then() method was changed to perform the same function.

    Solution: In most cases it is sufficient to change all occurrences of .pipe() to .then(). Ensure that you aren't relying on context/state propagation (e.g., using this) or synchronous callback invocation, which were dropped from .then() for Promises/A+ interoperability as of jQuery 3.0.

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Utility method to filter and/or chain Deferreds.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never
    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never

    Parameters

    Returns PromiseBase<
        ARD
        | ARF,
        AJD | AJF,
        AND | ANF,
        BRD | BRF,
        BJD | BJF,
        BND | BNF,
        CRD | CRF,
        CJD | CJF,
        CND | CNF,
        RRD | RRF,
        RJD | RJF,
        RND | RNF,
    >

    <a href="https://api.jquery.com/deferred.pipe/">https://api.jquery.com/deferred.pipe/</a>

    1.6

    1.7

    ​ Deprecated since 1.8. Use <a href="index.SDK.PromiseBase.html#then" class="tsd-kind-method">then</a>.

    Cause: The .pipe() method on a jQuery.Deferred object was deprecated as of jQuery 1.8, when the .then() method was changed to perform the same function.

    Solution: In most cases it is sufficient to change all occurrences of .pipe() to .then(). Ensure that you aren't relying on context/state propagation (e.g., using this) or synchronous callback invocation, which were dropped from .then() for Promises/A+ interoperability as of jQuery 3.0.

    var defer = $.Deferred(),
    filtered = defer.pipe( null, function( value ) {
    return value * 3;
    });

    defer.reject( 6 );
    filtered.fail(function( value ) {
    alert( "Value is ( 3*6 = ) 18: " + value );
    });
    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Utility method to filter and/or chain Deferreds.

    Type Parameters

    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never

    Parameters

    • doneFilter: null

      An optional function that is called when the Deferred is resolved.

    • failFilter: (
          t: TJ,
          u: UJ,
          v: VJ,
          ...s: SJ[],
      ) =>
          | AJF
          | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
          | Thenable<AJF>

      An optional function that is called when the Deferred is rejected.

    • OptionalprogressFilter: null

      An optional function that is called when progress notifications are sent to the Deferred.

    Returns PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>

    <a href="https://api.jquery.com/deferred.pipe/">https://api.jquery.com/deferred.pipe/</a>

    1.6

    1.7

    ​ Deprecated since 1.8. Use <a href="index.SDK.PromiseBase.html#then" class="tsd-kind-method">then</a>.

    Cause: The .pipe() method on a jQuery.Deferred object was deprecated as of jQuery 1.8, when the .then() method was changed to perform the same function.

    Solution: In most cases it is sufficient to change all occurrences of .pipe() to .then(). Ensure that you aren't relying on context/state propagation (e.g., using this) or synchronous callback invocation, which were dropped from .then() for Promises/A+ interoperability as of jQuery 3.0.

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Utility method to filter and/or chain Deferreds.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never

    Parameters

    • doneFilter: (
          t: TR,
          u: UR,
          v: VR,
          ...s: SR[],
      ) =>
          | ARD
          | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
          | Thenable<ARD>

      An optional function that is called when the Deferred is resolved.

    • OptionalfailFilter: null

      An optional function that is called when the Deferred is rejected.

    • OptionalprogressFilter: null

      An optional function that is called when progress notifications are sent to the Deferred.

    Returns PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>

    <a href="https://api.jquery.com/deferred.pipe/">https://api.jquery.com/deferred.pipe/</a>

    1.6

    1.7

    ​ Deprecated since 1.8. Use <a href="index.SDK.PromiseBase.html#then" class="tsd-kind-method">then</a>.

    Cause: The .pipe() method on a jQuery.Deferred object was deprecated as of jQuery 1.8, when the .then() method was changed to perform the same function.

    Solution: In most cases it is sufficient to change all occurrences of .pipe() to .then(). Ensure that you aren't relying on context/state propagation (e.g., using this) or synchronous callback invocation, which were dropped from .then() for Promises/A+ interoperability as of jQuery 3.0.

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Add handlers to be called when the Deferred object generates progress notifications.

    Parameters

    • progressCallback: TypeOrArray<CallbackBase<TN, UN, VN, SN>>

      A function, or array of functions, to be called when the Deferred generates progress notifications.

    • ...progressCallbacks: TypeOrArray<CallbackBase<TN, UN, VN, SN>>[]

      Optional additional functions, or arrays of functions, to be called when the Deferred generates progress notifications.

    Returns this

    <a href="https://api.jquery.com/deferred.progress/">https://api.jquery.com/deferred.progress/</a>

    1.7

  • Return a Deferred's Promise object.

    Type Parameters

    • TTarget extends object

    Parameters

    • target: TTarget

      Object onto which the promise methods have to be attached

    Returns PromiseBase<TR, TJ, TN, UR, UJ, UN, VR, VJ, VN, SR, SJ, SN> & TTarget

    <a href="https://api.jquery.com/deferred.promise/">https://api.jquery.com/deferred.promise/</a>

    1.5

    function asyncEvent() {
    var dfd = jQuery.Deferred();

    // Resolve after a random interval
    setTimeout(function() {
    dfd.resolve( "hurray" );
    }, Math.floor( 400 + Math.random() * 2000 ) );

    // Reject after a random interval
    setTimeout(function() {
    dfd.reject( "sorry" );
    }, Math.floor( 400 + Math.random() * 2000 ) );

    // Show a "working..." message every half-second
    setTimeout(function working() {
    if ( dfd.state() === "pending" ) {
    dfd.notify( "working... " );
    setTimeout( working, 500 );
    }
    }, 1 );

    // Return the Promise so caller can't change the Deferred
    return dfd.promise();
    }

    // Attach a done, fail, and progress handler for the asyncEvent
    $.when( asyncEvent() ).then(
    function( status ) {
    alert( status + ", things are going well" );
    },
    function( status ) {
    alert( status + ", you fail this time" );
    },
    function( status ) {
    $( "body" ).append( status );
    }
    );
  • Return a Deferred's Promise object.

    Returns this

    <a href="https://api.jquery.com/deferred.promise/">https://api.jquery.com/deferred.promise/</a>

    1.5

    // Existing object
    var obj = {
    hello: function( name ) {
    alert( "Hello " + name );
    }
    },
    // Create a Deferred
    defer = $.Deferred();

    // Set object as a promise
    defer.promise( obj );

    // Resolve the deferred
    defer.resolve( "John" );

    // Use the object as a Promise
    obj.done(function( name ) {
    obj.hello( name ); // Will alert "Hello John"
    }).hello( "Karl" ); // Will alert "Hello Karl"
  • Determine the current state of a Deferred object.

    Returns "pending" | "rejected" | "resolved"

    <a href="https://api.jquery.com/deferred.state/">https://api.jquery.com/deferred.state/</a>

    1.7

  • Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never
    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never
    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    Returns PromiseBase<
        ARD
        | ARF
        | ARP,
        AJD | AJF | AJP,
        AND | ANF | ANP,
        BRD | BRF | BRP,
        BJD | BJF | BJP,
        BND | BNF | BNP,
        CRD | CRF | CRP,
        CJD | CJF | CJP,
        CND | CNF | CNP,
        RRD | RRF | RRP,
        RJD | RJF | RJP,
        RND | RNF | RNP,
    >

    <a href="https://api.jquery.com/deferred.then/">https://api.jquery.com/deferred.then/</a>

    1.8

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>deferred.then demo</title>
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    </head>
    <body>

    <button>Filter Resolve</button>
    <p></p>

    <script>
    var filterResolve = function() {
    var defer = $.Deferred(),
    filtered = defer.then(function( value ) {
    return value * 2;
    });

    defer.resolve( 5 );
    filtered.done(function( value ) {
    $( "p" ).html( "Value is ( 2*5 = ) 10: " + value );
    });
    };

    $( "button" ).on( "click", filterResolve );
    </script>

    </body>
    </html>
    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.

    Type Parameters

    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never
    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    Returns PromiseBase<
        ARF
        | ARP,
        AJF | AJP,
        ANF | ANP,
        BRF | BRP,
        BJF | BJP,
        BNF | BNP,
        CRF | CRP,
        CJF | CJP,
        CNF | CNP,
        RRF | RRP,
        RJF | RJP,
        RNF | RNP,
    >

    <a href="https://api.jquery.com/deferred.then/">https://api.jquery.com/deferred.then/</a>

    1.8

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never
    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    Returns PromiseBase<
        ARD
        | ARP,
        AJD | AJP,
        AND | ANP,
        BRD | BRP,
        BJD | BJP,
        BND | BNP,
        CRD | CRP,
        CJD | CJP,
        CND | CNP,
        RRD | RRP,
        RJD | RJP,
        RND | RNP,
    >

    <a href="https://api.jquery.com/deferred.then/">https://api.jquery.com/deferred.then/</a>

    1.8

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.

    Type Parameters

    • ARP = never
    • AJP = never
    • ANP = never
    • BRP = never
    • BJP = never
    • BNP = never
    • CRP = never
    • CJP = never
    • CNP = never
    • RRP = never
    • RJP = never
    • RNP = never

    Parameters

    • doneFilter: null

      An optional function that is called when the Deferred is resolved.

    • failFilter: null

      An optional function that is called when the Deferred is rejected.

    • OptionalprogressFilter: (
          t: TN,
          u: UN,
          v: VN,
          ...s: SN[],
      ) =>
          | ANP
          | PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>
          | Thenable<ANP>

      An optional function that is called when progress notifications are sent to the Deferred.

    Returns PromiseBase<ARP, AJP, ANP, BRP, BJP, BNP, CRP, CJP, CNP, RRP, RJP, RNP>

    <a href="https://api.jquery.com/deferred.then/">https://api.jquery.com/deferred.then/</a>

    1.8

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never
    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never

    Parameters

    Returns PromiseBase<
        ARD
        | ARF,
        AJD | AJF,
        AND | ANF,
        BRD | BRF,
        BJD | BJF,
        BND | BNF,
        CRD | CRF,
        CJD | CJF,
        CND | CNF,
        RRD | RRF,
        RJD | RJF,
        RND | RNF,
    >

    <a href="https://api.jquery.com/deferred.then/">https://api.jquery.com/deferred.then/</a>

    1.8

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>deferred.then demo</title>
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    </head>
    <body>

    <button>Filter Resolve</button>
    <p></p>

    <script>
    var filterResolve = function() {
    var defer = $.Deferred(),
    filtered = defer.then(function( value ) {
    return value * 2;
    });

    defer.resolve( 5 );
    filtered.done(function( value ) {
    $( "p" ).html( "Value is ( 2*5 = ) 10: " + value );
    });
    };

    $( "button" ).on( "click", filterResolve );
    </script>

    </body>
    </html>
    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.

    Type Parameters

    • ARF = never
    • AJF = never
    • ANF = never
    • BRF = never
    • BJF = never
    • BNF = never
    • CRF = never
    • CJF = never
    • CNF = never
    • RRF = never
    • RJF = never
    • RNF = never

    Parameters

    • doneFilter: null

      An optional function that is called when the Deferred is resolved.

    • failFilter: (
          t: TJ,
          u: UJ,
          v: VJ,
          ...s: SJ[],
      ) =>
          | ARF
          | PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>
          | Thenable<ARF>

      An optional function that is called when the Deferred is rejected.

    • OptionalprogressFilter: null

      An optional function that is called when progress notifications are sent to the Deferred.

    Returns PromiseBase<ARF, AJF, ANF, BRF, BJF, BNF, CRF, CJF, CNF, RRF, RJF, RNF>

    <a href="https://api.jquery.com/deferred.then/">https://api.jquery.com/deferred.then/</a>

    1.8

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });
  • Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.

    Type Parameters

    • ARD = never
    • AJD = never
    • AND = never
    • BRD = never
    • BJD = never
    • BND = never
    • CRD = never
    • CJD = never
    • CND = never
    • RRD = never
    • RJD = never
    • RND = never

    Parameters

    • doneFilter: (
          t: TR,
          u: UR,
          v: VR,
          ...s: SR[],
      ) =>
          | ARD
          | PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>
          | Thenable<ARD>

      An optional function that is called when the Deferred is resolved.

    • OptionalfailFilter: null

      An optional function that is called when the Deferred is rejected.

    • OptionalprogressFilter: null

      An optional function that is called when progress notifications are sent to the Deferred.

    Returns PromiseBase<ARD, AJD, AND, BRD, BJD, BND, CRD, CJD, CND, RRD, RJD, RND>

    <a href="https://api.jquery.com/deferred.then/">https://api.jquery.com/deferred.then/</a>

    1.8

    var request = $.ajax( url, { dataType: "json" } ),
    chained = request.then(function( data ) {
    return $.ajax( url2, { data: { user: data.userId } } );
    });

    chained.done(function( data ) {
    // data retrieved from url2 as provided by the first request
    });