async function
宣è¨ã¯ãAsyncFunction
ãªãã¸ã§ã¯ãã使ãã¾ããéåæé¢æ°ãå¼ã³åºããããã³ã«ãæ°ãããããã¹ (Promise
) ãè¿ãããéåæé¢æ°ã«ãã£ã¦è¿ãããå¤ã§è§£æ±ºããã¾ããã¾ãã¯ãéåæé¢æ°å
ã§ææãããªãã£ãä¾å¤ã§æå¦ããã¾ãã
éåæé¢æ°ã«ã¯ã await
å¼ãç½®ããã¨ãã§ãã¾ãã await å¼ã¯è¿ããããããã¹ãå±¥è¡ããããæå¦ãããã¾ã§å®è¡ã䏿ãããã¨ã§ããããã¹ãè¿ã颿°ãããããåæãã¦ãããã®ããã«åä½ããã¾ãããããã¹ã®è§£æ±ºæ¸ã¿ã®å¤ã¯ãawait å¼ã®è¿å¤ã¨ãã¦æ±ããã¾ããasync
㨠await
ã使ç¨ããã¨ãéåæã³ã¼ãã«é常㮠try
/ catch
ãããã¯ã使ç¨ãããã¨ãã§ãã¾ãã
ã¡ã¢: ãã¼ã¯ã¼ã await
ã¯ãé常㮠JavaScript ã³ã¼ãå
ã®éåæé¢æ°å
ã§ã®ã¿æå¹ã§ããéåæé¢æ°ã®å¤ã§ä½¿ç¨ããå ´å㯠SyntaxError
ãçºçãã¾ãã
await
㯠JavaScript ã¢ã¸ã¥ã¼ã«ã§ã¯åç¬ã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
ã¡ã¢: async
/await
ã®ç®çã¯ããããã¹ãã¼ã¹ã® API ãå©ç¨ããã®ã«å¿
è¦ãªæ§æãç°¡ç´ åãããã¨ã§ãã async
/await
ã®åä½ã¯ãã¸ã§ãã¬ã¼ã¿ã¼ã¨ãããã¹ã®çµã¿åããã«ä¼¼ã¦ãã¾ãã
éåæé¢æ°ã¯å¸¸ã«ãããã¹ãè¿ãã¾ããéåæé¢æ°ã®è¿å¤ãæç¤ºçã«ãããã¹ã§ãªãå ´åã¯ãæé»çã«ãããã¹ã§ã©ããããã¾ãã
ä¾ãã°ã以ä¸ã®ã³ã¼ããèãã¦ãã ããã
async function foo() {
return 1;
}
ããã¯ã次ã®ã³ã¼ãã«ä¼¼ã¦ãã¾ãã
function foo() {
return Promise.resolve(1);
}
ãã¨ãéåæé¢æ°ã®è¿å¤ã Promise.resolve
ã§ã©ããããã¦ãããã®ããã«æ¯ãèãã¨ãã¦ãããããã¯åçã§ã¯ãªããã¨ã«æ³¨æãã¦ãã ãããéåæé¢æ°ã¯å¥ã®åç
§ãè¿ãã¾ãããPromise.resolve
ã¯æå®ãããå¤ããããã¹ã§ããã°åãåç
§ãè¿ãã¾ãããããã¹ã¨éåæé¢æ°ã®è¿å¤ã®ç価æ§ã調ã¹ããã¨ããã¨ãåé¡ãçºçããå¯è½æ§ãããã¾ãã
const p = new Promise((res, rej) => {
res(1);
});
async function asyncReturn() {
return p;
}
function basicReturn() {
return Promise.resolve(p);
}
console.log(p === basicReturn()); // true
console.log(p === asyncReturn()); // false
éåæé¢æ°ã®æ¬ä½ã¯ã0 å以ä¸ã® await å¼ã§åå²ããã¦ããã¨èãããã¨ãã§ãã¾ããæä¸ä½ã®ã³ã¼ãã¯ãæåã® await å¼ï¼ããå ´åï¼ã¾ã§å«ãã¦åæçã«å®è¡ããã¾ãããã®æ¹æ³ã§ã¯ãawait å¼ã®ãªãéåæé¢æ°ã¯åæçã«å®è¡ããã¾ãããããã颿°æ¬ä½å ã« await å¼ãããå ´åãéåæé¢æ°ã¯å¸¸ã«éåæçã«å®äºãã¾ãã
ä¾:
async function foo() {
await 1;
}
ããã¯æ¬¡ã®ãã®ã¨ç価ã§ãã
function foo() {
return Promise.resolve(1).then(() => undefined);
}
ããããã® await å¼ã®å¾ã®ã³ã¼ãã¯ã.then
ã³ã¼ã«ããã¯ã®ä¸ã«åå¨ããã¨èãããã¨ãã§ãã¾ãããã®ããã«ãã¦ã颿°ãå帰çã«å®è¡ãããã³ã«ããããã¹ãã§ã¼ã³ãå¾ã
ã«æ§ç¯ããã¦ããã¾ããè¿å¤ã¯ãã§ã¼ã³ã®æå¾ã®ãªã³ã¯ã«ãªãã¾ãã
次ã®ä¾ã§ã¯ã 2 ã¤ã®ãããã¹ãé£ç¶ãã¦å¾
ã¡åãã¾ãã颿° foo
ã®å¦ç㯠3 段éã«åããã¦ãã¾ãã
foo
ã®å¦çã¯ä¸æãããfoo
ãå¼ã³åºãã颿°ã«å¶å¾¡ãè¿ããã¾ããfoo
ã«æ»ãã¾ããï¼æå¦ãããªãã£ãå ´åã¯ï¼æåã®ãããã¹ãå±¥è¡ãããçµæã await å¼ããè¿ããã¾ããããã§ã¯ 1
ã result1
ã«ä»£å
¥ããã¾ããå¦çã¯ç¶ãã2 ã¤ç®ã® await å¼ãè©ä¾¡ããã¾ãããã®ã¨ãã foo
ã®å¦çã䏿ãããå¶å¾¡ãç§»è²ããã¾ããfoo
ã«åã³å
¥ãã¾ãã2 ã¤ç®ã®ãããã¹ã解決ããçµæã 2 çªç®ã® await å¼ããè¿ããã¾ããããã§ã¯ 2
ã result2
ã«ä»£å
¥ããã¾ããå¶å¾¡ã¯ï¼ããããã°ï¼return å¼ã«ç§»ãã¾ããæ¢å®ã®è¿å¤ã§ãã undefined
ããç¾å¨ã®ãããã¹ã®è§£æ±ºå¤ã¨ãã¦è¿ããã¾ããasync function foo() {
const result1 = await new Promise((resolve) =>
setTimeout(() => resolve("1")),
);
const result2 = await new Promise((resolve) =>
setTimeout(() => resolve("2")),
);
}
foo();
ãããã¹ãã§ã¼ã³ãä¸åº¦ã«æ§ç¯ãããªããã¨ã«æ³¨æãã¦ãã ããããããã¹ãã§ã¼ã³ã¯ãéåæé¢æ°ã«å¶å¾¡ã渡ãããæ»ãããããªãããæ®µéçã«æ§ç¯ããã¦ããã¾ãããã®ãããåæä¸¦è¡ã®éåæå¦çãè¡ãéã«ã¯ãã¨ã©ã¼å¦çã®åä½ã«æ³¨æããªããã°ãªãã¾ããã
ä¾ãã°ã以ä¸ã®ã³ã¼ãã§ã¯ããããã¹ãã§ã¼ã³ã®å
ã« .catch
ãã³ãã©ã¼ãè¨å®ããã¦ããã¨ãã¦ããæªå¦çã®ãããã¹æå¦ã¨ã©ã¼ãçºçãã¾ããããã¯ãp1
ããå¶å¾¡ãæ»ãã¾ã§ãp2
ããããã¹ãã§ã¼ã³ã«ãé
ç·ããããªãããã§ãã
async function foo() {
const p1 = new Promise((resolve) => setTimeout(() => resolve("1"), 1000));
const p2 = new Promise((_, reject) => setTimeout(() => reject("2"), 500));
const results = [await p1, await p2]; // ããããªãã§ãã ããã Promise.all ã¾ã㯠Promise.allSettled ã使ç¨ãã¦ãã ããã
}
foo().catch(() => {}); // ãã¹ã¦ã®ã¨ã©ã¼ãæµ
ããããã¨ãã...
async function
宣è¨ã¯ãfunction
宣è¨ã¨ä¼¼ãæåããã¾ããã¤ã¾ããå·»ãä¸ãã«ããã¹ã³ã¼ãã®å
é ã«ç§»åããã¹ã³ã¼ãå
ã®ã©ãããã§ãå¼ã³åºããã¨ãã§ãã¾ããã¾ããç¹å®ã®ã³ã³ããã¹ãã§ã®ã¿å宣è¨ãããã¨ãã§ãã¾ãã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4