Baseline Widely available
Generator
å®ä¾ç next()
æ¹æ³è¿åä¸ä¸ªå
å«å±æ§ done
å value
ç对象ãä½ ä¹å¯ä»¥éè¿å next
æ¹æ³ä¼ å
¥ä¸ä¸ªåæ°æ¥åçæå¨ä¼ ä¸ä¸ªå¼ã
value
å¯é
è¦ä¼ ç»çæå¨çå¼ã
该å¼å°ä½ä¸º yield
表达å¼çç»æãä¾å¦ï¼å¨ variable = yield expression
ä¸ï¼ä¼ å
¥ç» .next()
彿°çå¼å°è¢«åé
ç» variable
ã
ä¸ä¸ª Object
ï¼å
å«ä»¥ä¸ä¸¤ä¸ªå±æ§ï¼
done
ä¸ä¸ªå¸å°å¼ï¼
true
ãå¨è¿ç§æ
åµä¸ï¼value
æå®çæå¨çè¿åå¼ï¼å¯è½æ¯ undefinedï¼ãfalse
ãvalue
çæå¨äº§çæè¿åçä»»ä½ JavaScript å¼ã
ä¸é¢çä¾åå±ç¤ºäºä¸ä¸ªç®åççæå¨ï¼ä»¥åè°ç¨ next
æ¹æ³åçè¿åå¼ï¼
function* gen() {
yield 1;
yield 2;
yield 3;
}
const g = gen(); // Generator { }
g.next(); // { value: 1, done: false }
g.next(); // { value: 2, done: false }
g.next(); // { value: 3, done: false }
g.next(); // { value: undefined, done: true }
å° next() ä¸å表ä¸èµ·ä½¿ç¨
å¨è¿ä¸ªç¤ºä¾ä¸ï¼getPage
è·åä¸ä¸ªå表并å°å
¶æ pageSize
大å°âå页âæåãæ¯æ¬¡è°ç¨ next
é½ä¼äº§çä¸ä¸ªè¿æ ·çåã
function* getPage(list, pageSize = 1) {
for (let index = 0; index < list.length; index += pageSize) {
yield list.slice(index, index + pageSize);
}
}
const list = [1, 2, 3, 4, 5, 6, 7, 8];
const page = getPage(list, 3); // Generator { }
page.next(); // { value: [1, 2, 3], done: false }
page.next(); // { value: [4, 5, 6], done: false }
page.next(); // { value: [7, 8], done: false }
page.next(); // { value: undefined, done: true }
åçæå¨ä¼ å¼
卿¤ç¤ºä¾ä¸ï¼è°ç¨ next
æ¶ä¼ å
¥å¼ã
夿³¨ï¼ ç¬¬ä¸æ¬¡è°ç¨ä¸ä¼æå°ä»»ä½å 容ï¼å 为çæå¨æå没æäº§çä»»ä½å 容ã
function* gen() {
while (true) {
const value = yield;
console.log(value);
}
}
const g = gen();
g.next(1); // è¿å { value: undefined, done: false }
// è¿ä¸æ¥ä¸ä¼æè¾åºï¼éè¿ `next` åéç第ä¸ä¸ªå¼ä¼è¢«ä¸¢å¼
g.next(2); // è¿å { value: undefined, done: false }
// æå° 2
è§è æµè§å¨å
¼å®¹æ§ åè§
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