Home Web Front-end JS Tutorial How can you chain three asynchronous calls in jQuery using Promises, passing data from one call to the next?

How can you chain three asynchronous calls in jQuery using Promises, passing data from one call to the next?

Nov 01, 2024 pm 01:56 PM

How can you chain three asynchronous calls in jQuery using Promises, passing data from one call to the next?

Chaining Three Asynchronous Calls with jQuery Promises

In this question, we explore a scenario where you have three asynchronous HTTP requests to make in a synchronous manner, and you need to pass data from one call to the next.

Initial Approach:

As mentioned in the question, you attempted to use deferreds for the first two functions. This was a good start, but it only covered the case of two functions. Extending it to three functions requires a slightly different approach.

Chaining with JqXHR Objects:

The key to chaining multiple asynchronous calls is to return the jqXHR object returned by $.ajax() in each function. These objects are Promise-compatible and can be chained using .then()/.done()/.fail()/.always().

Updated Code:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

function first() {

   return $.ajax(...);

}

 

function second(data, textStatus, jqXHR) {

   return $.ajax(...);

}

 

function third(data, textStatus, jqXHR) {

   return $.ajax(...);

}

 

function main() {

    first().then(second).then(third);

}

Copy after login

In this updated code, the first() function returns the jqXHR object from its AJAX call, which is then passed as an argument to the second() function. The second() function, in turn, returns its jqXHR object, which is passed to the third() function.

Passing Data Between Functions:

The arguments data, textStatus, and jqXHR arise from the $.ajax() call in the previous function. This means that first() feeds second(), and second() feeds third(). Therefore, you can use these arguments to pass data from one function to the next.

Demo:

The code below demonstrates the chaining of three asynchronous calls using jQuery promises. It uses $.when('foo') to deliver a fulfilled promise in place of $.ajax(...).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

function first() {

   return $.when('foo');

}

 

function second(data) {

   return $.when('bar' + data);

}

 

function third(data) {

   return $.when('baz' + data);

}

 

first().then(second).then(third)

  .done(function(data) {

     console.log(data); // Logs "bazbarfoo"

  });

Copy after login

The above is the detailed content of How can you chain three asynchronous calls in jQuery using Promises, passing data from one call to the next?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Replace String Characters in JavaScript Replace String Characters in JavaScript Mar 11, 2025 am 12:07 AM

Replace String Characters in JavaScript

Custom Google Search API Setup Tutorial Custom Google Search API Setup Tutorial Mar 04, 2025 am 01:06 AM

Custom Google Search API Setup Tutorial

Example Colors JSON File Example Colors JSON File Mar 03, 2025 am 12:35 AM

Example Colors JSON File

Build Your Own AJAX Web Applications Build Your Own AJAX Web Applications Mar 09, 2025 am 12:11 AM

Build Your Own AJAX Web Applications

8 Stunning jQuery Page Layout Plugins 8 Stunning jQuery Page Layout Plugins Mar 06, 2025 am 12:48 AM

8 Stunning jQuery Page Layout Plugins

What is 'this' in JavaScript? What is 'this' in JavaScript? Mar 04, 2025 am 01:15 AM

What is 'this' in JavaScript?

Improve Your jQuery Knowledge with the Source Viewer Improve Your jQuery Knowledge with the Source Viewer Mar 05, 2025 am 12:54 AM

Improve Your jQuery Knowledge with the Source Viewer

10 Mobile Cheat Sheets for Mobile Development 10 Mobile Cheat Sheets for Mobile Development Mar 05, 2025 am 12:43 AM

10 Mobile Cheat Sheets for Mobile Development

See all articles