Github ããã¦ã¼ã¶ããã§ãããã
Github ã®ãã°ã¤ã³(ã¦ã¼ã¶å)ã®é
åãåå¾ããGithub ããã¦ã¼ã¶ããã§ããããGithub ã¦ã¼ã¶ã®é
åãè¿ãéåæé¢æ° getUsers(names) ã使ãã¦ãã ããã
æå®ããã USERNAME ã«å¯¾ããã¦ã¼ã¶æ
å ±ã® Github url 㯠https://api.github.com/users/USERNAME ã§ãã
ãµã³ãããã¯ã¹ã«ãã¹ãä¾ãããã¾ãã
éè¦ãªç¹:
- ã¦ã¼ã¶æ¯ã«1ã¤ã®
fetchãªã¯ã¨ã¹ããããã¯ãã§ããã¾ãããªã¯ã¨ã¹ãã¯ãäºãå¾ ã¤å¿ è¦ã¯ããã¾ããããã¼ã¿ã¯ãªãã¹ãæ©ãåå¾ã§ããããã«ãã¦ãã ããã - ãªã¯ã¨ã¹ãã失æããå ´åãã¾ãã¯ãã®ãããªã¦ã¼ã¶ãããªãå ´åã¯ã颿°ã¯çµæã®é
åã§
nullãè¿ãã¾ãã
ã¦ã¼ã¶ããã§ããããã«ã¯æ¬¡ãå¿ è¦ã§ã:
fetch('https://api.github.com/users/USERNAME').- ã¬ã¹ãã³ã¹ã®ã¹ãã¼ã¿ã¹ã
200ã§ããã°ãJS ãªãã¸ã§ã¯ããèªããã.json()ãå¼ã³åºãã¾ãã
fetch ã失æãã¾ãã¯ã¬ã¹ãã³ã¹ã¹ãã¼ã¿ã¹ã200以å¤ã®æ°å¤ã®å ´åã¯ãçµæã®é
åã§åã« null ãè¿ãã¾ãã
ããã¯ãã®ã³ã¼ãã§ã:
async function getUsers(names) {
let jobs = [];
for(let name of names) {
let job = fetch(`https://api.github.com/users/${name}`).then(
successResponse => {
if (successResponse.status != 200) {
return null;
} else {
return successResponse.json();
}
},
failResponse => {
return null;
}
);
jobs.push(job);
}
let results = await Promise.all(jobs);
return results;
}
注æ: .then å¼ã³åºãã¯ãfetch ã«ç´æ¥ã¢ã¿ããããã¦ãã¾ãããã®ãããã¬ã¹ãã³ã¹ãããå ´åã«ã¯ä»ã®ãã§ããã¯å¾
ããã«ããã« .json() ãèªã¿å§ãã¾ãã
await Promise.all(names.map(name => fetch()...))) ã使ç¨ãã¦ããã®çµæã«å¯¾ã㦠.json() ãå¼ã³åºãã¨ããã¹ã¦ã®ãã§ãããå¿çããã®ãå¾
ã¡ã¾ãã .json() ãå fetch ã«ç´æ¥è¿½å ãããã¨ã§ãåã
ã®ãã§ããããäºããå¾
ããã«ãã¼ã¿ãJSONã¨ãã¦èªã¿å§ãããã¨ãä¿è¨¼ãã¾ãã
ããã¯ããã¨ãç§ãã¡ã主㫠async/await ã使ã£ã¦ãã¦ããä½ã¬ãã«ã® Promise APIãããã«æç¨ã§ãããã®ä¾ã§ãã
ãµã³ãããã¯ã¹ã§ãã¹ãã¨ä¸ç·ã«è§£çãéã