async function* å¼
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2020å¹´1æ.
async function* ãã¼ã¯ã¼ãã¯ãå¼ã®å
é¨ã§éåæã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ãå®ç¾©ããããã«ä½¿ç¨ã§ãã¾ãã
ã¾ãã async function* å®£è¨ ã使ã£ã¦éåæã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ãå®ç¾©ãããã¨ãã§ãã¾ãã
試ãã¦ã¿ã¾ããã
async function joinAll(generator) {
let str = "";
for await (const val of generator()) {
str += val;
}
return str;
}
joinAll(async function* () {
yield await Promise.resolve("a");
yield await Promise.resolve("b");
yield await Promise.resolve("c");
}).then((str) => console.log(str));
// äºæ³ãããçµæ: "abc"
æ§æ
async function* (param0) {
statements
}
async function* (param0, param1) {
statements
}
async function* (param0, param1, /* â¦, */ paramN) {
statements
}
async function* name(param0) {
statements
}
async function* name(param0, param1) {
statements
}
async function* name(param0, param1, /* â¦, */ paramN) {
statements
}
ã¡ã¢:
弿 ã¯ã async function* 宣è¨ã¨ã®ææ§ããé¿ããããã«ããã¼ã¯ã¼ã async function ã§å§ãããã¨ã¯ã§ãã¾ããã async function ãã¼ã¯ã¼ãã¯ãæãåãä»ããªãã³ã³ããã¹ãã«ç¾ããã¨ãã®ã¿ãå¼ãéå§ãã¾ãã
弿°
nameçç¥å¯-
颿°åãçç¥å¯è½ã§ããã®å ´å颿°ã¯ç¡åã¨ãªãã¾ãããã®ååã¯é¢æ°æ¬ä½ã«å¯¾ãã¦ã®ã¿ãã¼ã«ã«ã§ãã
paramNçç¥å¯-
颿°ã®æ£å¼ãªå¼æ°ã®ååã§ãã弿°ã®æ§æã«ã¤ãã¦ã¯ã颿°ãªãã¡ã¬ã³ã¹ãåç §ãã¦ãã ããã
statementsçç¥å¯-
颿°æ¬ä½ãæ§æããæã§ãã
解説
async function* å¼ã¯ async function* å®£è¨ ã¨ã¨ã¦ãä¼¼ã¦ãããã»ã¨ãã©åãæ§æãæã£ã¦ãã¾ãã async function* å¼ã¨ async function* 宣è¨ã®ä¸»ãªéãã¯é¢æ°åã§ã async function* å¼ã§ã¯ç¡å颿°ã使ããããã«çç¥ãããã¨ãã§ãã¾ãã async function* å¼ã¯å®ç¾©ãããã¨ããã«å®è¡ããã IIFE (Immediately Invoked Function Expression) ã¨ãã¦ä½¿ããã¨ãã§ããã¢ãããã¯ãªéåæå復å¯è½ãªãã¸ã§ã¯ãã使ãããã¨ãã§ãã¾ãã詳ããã¯é¢æ°ã®ç« ãåç
§ãã¦ãã ããã
ä¾
>async function* å¼ã®ä½¿ç¨
次ã®ä¾ã§ã¯ãç¡åã®éåæã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ãå®ç¾©ããããã x ã«ä»£å
¥ãã¦ãã¾ãããã®é¢æ°ã¯å¼æ°ã®2ä¹ãè¿ãã¾ãã
const x = async function* (y) {
yield Promise.resolve(y * y);
};
x(6)
.next()
.then((res) => console.log(res.value)); // 36
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-async-generator-function-definitions> |