Baseline 2024
Newly available
Array.fromAsync()
ã¯éçã¡ã½ããã§ãéåæå復å¯è½ãªãã¸ã§ã¯ããå復å¯è½ãªãã¸ã§ã¯ããé
å風ã®ãªãã¸ã§ã¯ããããã·ã£ãã¼ã³ãã¼ãããæ°ããé
åã¤ã³ã¹ã¿ã³ã¹ã使ãã¾ãã
Array.fromAsync(items)
Array.fromAsync(items, mapFn)
Array.fromAsync(items, mapFn, thisArg)
弿°
items
é åã«å¤æããéåæå復å¯è½ãå復å¯è½ãé å風ãªãã¸ã§ã¯ãã§ãã
mapFn
çç¥å¯
é
åã®åè¦ç´ ã«å¯¾ãã¦å¼ã³åºã颿°ã§ããæå®ãããå ´åã¯ãé
åã«è¿½å ãããã¹ã¦ã®å¤ãæåã«ãã®é¢æ°ã«æ¸¡ããã mapFn
ã®è¿å¤ãï¼å¾
æ©å¾ã«ï¼é
åã«è¿½å ããã¾ãããã®é¢æ°ã¯ä»¥ä¸ã®å¼æ°ã§å¼ã³åºããã¾ãã
element
items
ãåæã¤ãã¬ã¼ã¿ã¼ã¾ãã¯é
å風ãªãã¸ã§ã¯ãã®å ´åããã¹ã¦ã®è¦ç´ ãæåã«å¾
æ©ç¶æ
ã¨ãªããelement
㯠thenable ã«ãªããã¨ã¯ããã¾ããã items
ãéåæå復å¯è½ãªãã¸ã§ã¯ãã®å ´åãããããã®å¤ã¯ãã®ã¾ã¾æ¸¡ããã¾ãã
index
é åã®ãç¾å¨å¦çä¸ã®è¦ç´ ã®ã¤ã³ããã¯ã¹ã§ãã
thisArg
çç¥å¯
mapFn
å®è¡æã« this
ã¨ãã¦ä½¿ç¨ããå¤ã§ãã
æ°ãã Promise
ã§ããã®å±¥è¡å¤ã¯æ°ãã Array
ã¤ã³ã¹ã¿ã³ã¹ã§ãã
Array.fromAsync()
ã«ããã以ä¸ã®ãã®ããé
åã使ãããã¨ãã§ãã¾ãã
ReadableStream
ã AsyncGenerator
ãªã©ã®ãªãã¸ã§ã¯ãï¼ãã¾ãã¯ããªãã¸ã§ã¯ããéåæå復å¯è½ã§ã¯ãªãå ´åãMap
ã Set
çã®ãªãã¸ã§ã¯ãï¼ãã¾ãã¯ããªãã¸ã§ã¯ããå復å¯è½ã§ã¯ãªãå ´åãlength
ããããã£ã¨ã¤ã³ããã¯ã¹å¤ã«ããè¦ç´ ãæã¤ãªãã¸ã§ã¯ãï¼ãArray.fromAsync()
㯠for await...of
ã«ã¨ã¦ãããä¼¼ãæ¹æ³ã§éåæå復å¯è½ãªãã¸ã§ã¯ããå復å¦çãã¾ãã Array.fromAsync(items)
ã¯ã以ä¸ãã®ç¹é¤ã㦠Array.from()
ã¨ã»ã¼åãåãããã¾ãã
const result = [];
for await (const element of items) {
result.push(element);
}
Array.fromAsync()
ã¯ã次ã®ç¹ãé¤ãã¦ãåä½ã¯ Array.from()
ã¨ã»ã¼åãã§ãã
Array.fromAsync()
ã¯éåæå復å¯è½ãªãã¸ã§ã¯ããæ±ããã¨ãã§ãã¾ããArray.fromAsync()
ã¯é
åã¤ã³ã¹ã¿ã³ã¹ã§å±¥è¡ããã Promise
ãè¿ãã¾ããArray.fromAsync()
ãéåæå復å¯è½ãªãã¸ã§ã¯ããæå®ãã¦å¼ã³åºãããå ´åãé
åã«è¿½å ããåè¦ç´ ãæåã«å¾
æ©ããã¾ããmapFn
ãæå®ãããå ´åããã®åºåãå
é¨ã§å¾
æ©ããã¾ããArray.fromAsync()
㨠Promise.all()
ã¯ã©ã¡ãããå復å¯è½ãªãããã¹ãé
åã®ãããã¹ã«å¤æãããã¨ãã§ãã¾ãããããã 2 ã¤ã®éè¦ãªéããããã¾ãã
Array.fromAsync()
ã¯ãªãã¸ã§ã¯ãããå¾ãããå¤ãé çªã«å¾
ã¡ã¾ãã Promise.all()
ã¯ãã¹ã¦ã®å¤ãåæã«å¾
ã¡ã¾ããArray.fromAsync()
ã¯å復å¯è½ãªãã¸ã§ã¯ããé
å»¶çã«å復å¦çããç¾å¨ã®å¤ã決å®ããã¾ã§æ¬¡ã®å¤ãåå¾ãã¾ããã Promise.all()
ã¯ãã¹ã¦ã®å¤ãäºåã«åå¾ãããããå¾
ã¡ã¾ããconst asyncIterable = (async function* () {
for (let i = 0; i < 5; i++) {
await new Promise((resolve) => setTimeout(resolve, 10 * i));
yield i;
}
})();
Array.fromAsync(asyncIterable).then((array) => console.log(array));
// [0, 1, 2, 3, 4]
items
ãéåæã®å復å¯è½ãªãã¸ã§ã¯ãã§ãããããããã®çµæã® value
ããããã¹ã§ããå ´åããããã®ãããã¹ã¯å¾
æ©ããããã¨ãªããçµæã®é
åã«è¿½å ããã¾ãããã㯠for await...of
ã®åä½ã¨ä¸è´ãã¦ãã¾ãã
function createAsyncIter() {
let i = 0;
return {
[Symbol.asyncIterator]() {
return {
async next() {
if (i > 2) return { done: true };
i++;
return { value: Promise.resolve(i), done: false };
},
};
},
};
}
Array.fromAsync(createAsyncIter()).then((array) => console.log(array));
// (3) [Promise, Promise, Promise]
ã¡ã¢: å®éã«ã¯ããããã¹ãçæããéåæå復å¯è½ãªãã¸ã§ã¯ãã«ééãããã¨ã¯ã»ã¨ãã©ããã¾ããããªããªããéåæã¸ã§ãã¬ã¼ã¿é¢æ°ã使ç¨ãã¦å®è£
ããã¨ã yield
å¼ã«ãã£ã¦ãããã¹ãèªåçã«ã©ããè§£é¤ãããããã§ãã
Array.fromAsync(
new Map([
[1, 2],
[3, 4],
]),
).then((array) => console.log(array));
// [[1, 2], [3, 4]]
ãããã¹ãçæããåæå復å¯è½ãªãã¸ã§ã¯ãããé
åãåå¾
Array.fromAsync(
new Set([Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)]),
).then((array) => console.log(array));
// [1, 2, 3]
ãããã¹ã®é
å風ãªãã¸ã§ã¯ãããé
åãåå¾
Array.fromAsync({
length: 3,
0: Promise.resolve(1),
1: Promise.resolve(2),
2: Promise.resolve(3),
}).then((array) => console.log(array));
// [1, 2, 3]
mapFn ãåæå復å¯è½ãªãã¸ã§ã¯ãã¨ä½¿ç¨
items
ãåæå復å¯è½ãªãã¸ã§ã¯ãã¾ãã¯é
å風ã§ããå ´åãmapFn
ã®å
¥åã¨åºåã¯ãå
é¨ã§ Array.fromAsync()
ã«ãã£ã¦å¾
æ©ããã¾ãã
function delayedValue(v) {
return new Promise((resolve) => setTimeout(() => resolve(v), 100));
}
Array.fromAsync(
[delayedValue(1), delayedValue(2), delayedValue(3)],
(element) => delayedValue(element * 2),
).then((array) => console.log(array));
// [2, 4, 6]
mapFn ãéåæå復å¯è½ãªãã¸ã§ã¯ãã¨ä½¿ç¨
items
ãéåæå復å¯è½ãªãã¸ã§ã¯ãã®å ´åãmapFn
ã¸ã®å
¥åã¯å¾
æ©ããã¾ããããåºåã¯å¾
æ©ããã¾ããä¸è¨ã¨åã createAsyncIter
颿°ã使ç¨ãã¾ãã
Array.fromAsync(createAsyncIter(), async (element) => (await element) * 2).then(
(array) => console.log(array),
);
// [2, 4, 6]
è峿·±ããã¨ã«ããã㯠Array.fromAsync(createAsyncIter())
㯠Array.fromAsync(createAsyncIter(), (element) => element)
ã¨åçã§ã¯ãªããã¨ãæå³ãã¦ãã¾ããå¾è
ã¯ããããã®çæå¤ãå¾
æ©ãã¾ãããåè
ã¯å¾
æ©ããªãããã§ãã
Array.fromAsync(createAsyncIter(), (element) => element).then((array) =>
console.log(array),
);
// [1, 2, 3]
Promise.all() ã¨ã®æ¯è¼
Array.fromAsync()
ã¯ãªãã¸ã§ã¯ãããå¾ãããå¤ãé çªã«å¾
ã¡ã¾ãã Promise.all()
ã¯ãã¹ã¦ã®å¤ãåæã«å¾
ã¡ã¾ãã
function* makeIterableOfPromises() {
for (let i = 0; i < 5; i++) {
yield new Promise((resolve) => setTimeout(resolve, 100));
}
}
(async () => {
console.time("Array.fromAsync() time");
await Array.fromAsync(makeIterableOfPromises());
console.timeEnd("Array.fromAsync() time");
// Array.fromAsync() time: 503.610ms
console.time("Promise.all() time");
await Promise.all(makeIterableOfPromises());
console.timeEnd("Promise.all() time");
// Promise.all() time: 101.728ms
})();
åæå復å¯è½ãªãã¸ã§ã¯ãã®ã¨ã©ã¼å¦çãªã
for await...of
ã¨åæ§ã«ãå復å¦çããããªãã¸ã§ã¯ããåæå復å¯è½ãªãã¸ã§ã¯ãã§ãå復å¦çä¸ã«ã¨ã©ã¼ãçºçããå ´åãåºç¤ã¨ãªãã¤ãã¬ã¼ã¿ã¼ã® return()
ã¡ã½ããã¯å¼ã³åºããããã¤ãã¬ã¼ã¿ã¼ã¯éãããã¾ããã
function* generatorWithRejectedPromises() {
try {
yield 0;
yield Promise.reject(new Error("error"));
} finally {
console.log("called finally");
}
}
(async () => {
try {
await Array.fromAsync(generatorWithRejectedPromises());
} catch (e) {
console.log("caught", e);
}
})();
// caught Error: error
// No "called finally" message
ã¤ãã¬ã¼ã¿ã¼ãéããå¿
è¦ãããå ´åã¯ã代ããã« for...of
ã«ã¼ãã使ç¨ãã¦ãåå¤ã await
ããå¿
è¦ãããã¾ãã
(async () => {
const arr = [];
try {
for (const val of generatorWithRejectedPromises()) {
arr.push(await val);
}
} catch (e) {
console.log("caught", e);
}
})();
// called finally
// caught 3
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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