Response.clone()

The clone() method of the Response interface creates a clone of a response object, identical in every way, but stored in a different variable.

clone() throws a TypeError if the response body has already been used. In fact, the main reason clone() exists is to allow multiple uses of body objects (when they are one-use only.)

Syntax

var response2 = response1.clone();

Parameters

None.

Value

A Response object.

Example

In our Fetch Response clone example (see Fetch Response clone live) we create a new Request object using the Request() constructor, passing it a JPG path. We then fetch this request using fetch(). When the fetch resolves successfully, we clone it, extract a blob from both responses using two Response.blob calls, create object URLs out of the blobs using URL.createObjectURL, and display them in two separate <img> elements.

var image1 = document.querySelector('.img1');
var image2 = document.querySelector('.img2');

var myRequest = new Request('flowers.jpg');

fetch(myRequest).then(function(response) {
  var response2 = response.clone();

  response.blob().then(function(myBlob) {
    var objectURL = URL.createObjectURL(myBlob);
    image1.src = objectURL;
  });

  response2.blob().then(function(myBlob) {
    var objectURL = URL.createObjectURL(myBlob);
    image2.src = objectURL;
  });
});

Specifications

Specification
Fetch Standard
# ref-for-dom-response-clone①

Browser compatibility

BCD tables only load in the browser

See also