Baseline Widely available
AsyncGenerator
å®ä¾ç next()
æ¹æ³è¿ååºåä¸çä¸ä¸ä¸ªå¼ã
value
å¯é
ç¨äºä¿®æ¹çæå¨å
é¨ç¶æçå¯éå¼ãä¼ å
¥ç» next()
æ¹æ³çå¼å°è¢« yield
æ¥æ¶ã
ä¸ä¸ª Promise
ï¼å
¶å
ç°æ¶å°è¿åä¸ä¸ª Object
ï¼å
å«ä»¥ä¸ä¸¤ä¸ªå±æ§ï¼
done
ä¸ä¸ªå¸å°å¼ï¼
true
ãå¨è¿ç§æ
åµä¸ï¼value
æå®çæå¨çè¿åå¼ï¼å¯è½æ¯ undefinedï¼ãfalse
ãvalue
çæå¨äº§çæè¿åçä»»ä½ JavaScript å¼ã
以ä¸ç¤ºä¾å±ç¤ºäºä¸ä¸ªç®åççæå¨ä»¥åè°ç¨ next
æ¹æ³åè¿åç对象ï¼
// 弿¥ä»»å¡ãå设å®å¨å®è·µä¸åäºä¸äºæ´æç¨çäºæ
ã
function delayedValue(time, value) {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(value), time);
});
}
async function* createAsyncGenerator() {
yield delayedValue(500, 1);
yield delayedValue(500, 2);
yield delayedValue(500, 3);
}
const asyncGen = createAsyncGenerator();
asyncGen.next().then((res) => console.log(res)); // { value: 1, done: false }
asyncGen.next().then((res) => console.log(res)); // { value: 2, done: false }
asyncGen.next().then((res) => console.log(res)); // { value: 3, done: false }
asyncGen.next().then((res) => console.log(res)); // { value: undefined, done: true }
åçæå¨ä¼ å¼
卿¤ç¤ºä¾ä¸ï¼è°ç¨ next
æ¶ä¼ å
¥äºå¼ã
夿³¨ï¼ ç¬¬ä¸æ¬¡è°ç¨ä¸ä¼æå°ä»»ä½å 容ï¼å 为çæå¨æå没æäº§çä»»ä½å 容ã
// 弿¥ä»»å¡ãå设å®å¨å®è·µä¸åäºä¸äºæ´æç¨çäºæ
ã
function sleep(time) {
return new Promise((resolve, reject) => {
setTimeout(resolve, time);
});
}
async function* createAsyncGenerator() {
while (true) {
await sleep(500);
const value = yield;
console.log(value);
}
}
async function main() {
const asyncGen = createAsyncGenerator();
// è¿ä¸æ¥ä¸ä¼æè¾åºï¼éè¿ `next` åéç第ä¸ä¸ªå¼ä¼è¢«ä¸¢å¼
console.log(await asyncGen.next(1)); // { value: undefined, done: false }
// æå°éè¿ `next` åéçå¼ââ2
console.log(await asyncGen.next(2)); // { value: undefined, done: false }
}
main();
è§è æµè§å¨å
¼å®¹æ§ åè§
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