Response: clone() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2017å¹´3æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
clone() 㯠Response ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ãã¬ã¹ãã³ã¹ãªãã¸ã§ã¯ãã®è¤è£½ã使ãã¾ãããã®è¤è£½ã¯ããããé¢ã§åä¸ã§ãããç°ãªã夿°ã«æ ¼ç´ããã¾ãã
åºç¤ã¨ãªã ReadableStream.tee api ã®ããã«ãè¤è£½ããã Response ã® body ã¯ã 2 ã¤ã®æ¬ä½ã®ãã¡ ããéã ã³ã³ã·ã¥ã¼ãã¼ã®é度ã§èå§ãéç¥ããæªèªãã¼ã¿ã¯å¶éãèå§ãªãã«ããé
ãæ¶è²»ããã body ã§å
é¨ã§ãã¥ã¼ã¤ã³ã°ããã¾ãã
èå§ã¨ã¯ããã¼ã¿ã®ã¹ããªã¼ãã³ã°ã³ã³ã·ã¥ã¼ãã¼ï¼ãã®å ´åã¯æ¬ä½ãèªãã³ã¼ãï¼ããã¢ããªã±ã¼ã·ã§ã³ã§ä½¿ç¨ãããã®ãå¾
ã£ã¦ããã¡ã¢ãªã¼ã«å¤§éã®ãã¼ã¿ãèªã¿è¾¼ã¾ãªãããã«ããã¼ã¿ã®ãããã¥ã¼ãµã¼ï¼TCP ãµã¼ãã¼ãªã©ï¼ã®é度ãä½ä¸ãããã¡ã«ããºã ãåç
§ãããã¨ã§ãã
ããè¤è£½ãããåå²ãä¸ã¤ããæ¶è²»ãããªãå ´åãæ¬ä½å
¨ä½ãã¡ã¢ãªã¼ã«ãããã¡ãªã³ã°ããã¾ãã
ãããã£ã¦ãclone() ã¯ã¬ã¹ãã³ã¹ã 2 åé£ç¶ãã¦èªã¿è¾¼ãããã®ä¸ã¤ã®æ¹æ³ã§ãããé常ã«å¤§ããªæ¬ä½ãç°ãªãé度ã§ä¸¦åã«èªã¿è¾¼ãããã«ä½¿ç¨ããã¹ãã§ã¯ããã¾ããã
clone() ã¯ãã¬ã¹ãã³ã¹æ¬ä½ãæ¢ã«ä½¿ç¨ããã¦ããå ´å㯠TypeError ãçºçããã¾ãã
å®éãclone() ãåå¨ãã主ãªçç±ã¯ãæ¬ä½ãªãã¸ã§ã¯ããè¤æ°å使ç¨ã§ããããã«ããããã§ãï¼ä¸åº¦ãã使ç¨ã§ããªãå ´åï¼ã
æ§æ
clone()
弿°
ãªãã
è¿å¤
Response ãªãã¸ã§ã¯ãã§ãã
ä¾
Fetch Response clone ã®ä¾ï¼Fetch Response clone ã®ã©ã¤ãç ãåç
§ï¼ã§ã¯ã Request() ã³ã³ã¹ãã©ã¯ã¿ã¼ã§æ°ãã Request ãªãã¸ã§ã¯ãã使ãã JPG ã®ãã¹ã渡ãã¾ãã
ãã㦠fetch() ã使ç¨ãã¦ãã®ãªã¯ã¨ã¹ããèªã¿è¾¼ã¿ã¾ãã
ãã§ãããæ£å¸¸ã«è§£æ±ºãããã¨ããããè¤è£½ãã2 ã¤ã® Response.blob å¼ã³åºãã使ç¨ãã¦ä¸¡æ¹ã®ã¬ã¹ãã³ã¹ãã blob ãæ½åºããURL.createObjectURL() ã使ç¨ã㦠blob ãããªãã¸ã§ã¯ã URL ã使ãããããã 2 ã¤ã®å¥ã
ã® <img> è¦ç´ ã§è¡¨ç¤ºãã¾ãã
const image1 = document.querySelector(".img1");
const image2 = document.querySelector(".img2");
const myRequest = new Request("flowers.jpg");
fetch(myRequest).then((response) => {
const response2 = response.clone();
response.blob().then((myBlob) => {
const objectURL = URL.createObjectURL(myBlob);
image1.src = objectURL;
});
response2.blob().then((myBlob) => {
const objectURL = URL.createObjectURL(myBlob);
image2.src = objectURL;
});
});
仿§æ¸
| 仿§æ¸ |
|---|
| Fetch > # ref-for-dom-response-cloneâ > |