Baseline 2024
Newly available
Array.fromAsync()
ã¯éçã¡ã½ããã§ãéåæå復å¯è½ãªãã¸ã§ã¯ããå復å¯è½ãªãã¸ã§ã¯ããé
å風ã®ãªãã¸ã§ã¯ããããã·ã£ãã¼ã³ãã¼ãããæ°ããé
åã¤ã³ã¹ã¿ã³ã¹ã使ãã¾ãã
Array.fromAsync(arrayLike)
Array.fromAsync(arrayLike, mapFn)
Array.fromAsync(arrayLike, mapFn, thisArg)
弿°
arrayLike
é åã«å¤æããéåæå復å¯è½ãå復å¯è½ãé å風ãªãã¸ã§ã¯ãã§ãã
mapFn
çç¥å¯
é
åã®åè¦ç´ ã«å¯¾ãã¦å¼ã³åºã颿°ã§ããæå®ãããå ´åã¯ãé
åã«è¿½å ãããã¹ã¦ã®å¤ãæåã«ãã®é¢æ°ã«æ¸¡ããã mapFn
ã®è¿å¤ãï¼å¾
æ©å¾ã«ï¼é
åã«è¿½å ããã¾ãããã®é¢æ°ã¯ä»¥ä¸ã®å¼æ°ã§å¼ã³åºããã¾ãã
element
é åå ã§ç¾å¨å¦çä¸ã®è¦ç´ ã§ãããã¹ã¦ã®è¦ç´ ãæåã«å¾ æ©ç¶æ ã«ãªãããããã®å¤ã thenable ã«ãªããã¨ã¯ããã¾ããã
index
é åã®ãç¾å¨å¦çä¸ã®è¦ç´ ã®ã¤ã³ããã¯ã¹ã§ãã
thisArg
çç¥å¯
mapFn
å®è¡æã« this
ã¨ãã¦ä½¿ç¨ããå¤ã§ãã
æ°ãã Promise
ã§ããã®å±¥è¡å¤ã¯æ°ãã Array
ã¤ã³ã¹ã¿ã³ã¹ã§ãã
Array.fromAsync()
ã«ããã以ä¸ã®ãã®ããé
åã使ãããã¨ãã§ãã¾ãã
ReadableStream
ã AsyncGenerator
ãªã©ã®ãªãã¸ã§ã¯ãï¼ãã¾ãã¯ããªãã¸ã§ã¯ããéåæå復å¯è½ã§ã¯ãªãå ´åãMap
ã Set
çã®ãªãã¸ã§ã¯ãï¼ãã¾ãã¯ããªãã¸ã§ã¯ããå復å¯è½ã§ã¯ãªãå ´åãlength
ããããã£ã¨ã¤ã³ããã¯ã¹å¤ã«ããè¦ç´ ãæã¤ãªãã¸ã§ã¯ãï¼ãArray.fromAsync()
㯠for await...of
ã«ã¨ã¦ãããä¼¼ãæ¹æ³ã§éåæå復å¯è½ãªãã¸ã§ã¯ããå復å¦çãã¾ãã 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]
åæå復å¯è½ãªãã¸ã§ã¯ãããé
åãåå¾
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 ã®ä½¿ç¨
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]
Promise.all() ã¨ã®æ¯è¼
Array.fromAsync()
ã¯ãªãã¸ã§ã¯ãããå¾ãããå¤ãé çªã«å¾
ã¡ã¾ãã Promise.all()
ã¯ãã¹ã¦ã®å¤ãåæã«å¾
ã¡ã¾ãã
function* makeAsyncIterable() {
for (let i = 0; i < 5; i++) {
yield new Promise((resolve) => setTimeout(resolve, 100));
}
}
(async () => {
console.time("Array.fromAsync() time");
await Array.fromAsync(makeAsyncIterable());
console.timeEnd("Array.fromAsync() time");
// Array.fromAsync() time: 503.610ms
console.time("Promise.all() time");
await Promise.all(makeAsyncIterable());
console.timeEnd("Promise.all() time");
// Promise.all() time: 101.728ms
})();
åæå復å¯è½ãªãã¸ã§ã¯ãã®ã¨ã©ã¼å¦çãªã
for await...of
ã¨åæ§ã«ãå復å¦çããããªãã¸ã§ã¯ããåæå復å¯è½ãªãã¸ã§ã¯ãã§ãå復å¦çä¸ã«ã¨ã©ã¼ãçºçããå ´åãåºç¤ã¨ãªãã¤ãã¬ã¼ã¿ã¼ã® return()
ã¡ã½ããã¯å¼ã³åºããããã¤ãã¬ã¼ã¿ã¼ã¯éãããã¾ããã
function* generatorWithRejectedPromises() {
try {
yield 0;
yield Promise.reject(3);
} finally {
console.log("called finally");
}
}
(async () => {
try {
await Array.fromAsync(generatorWithRejectedPromises());
} catch (e) {
console.log("caught", e);
}
})();
// caught 3
// 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