Piszemy generator do wyszukiwania elementów w DOM w bardzo prosty sposób. Do dzieła.
Najpierw nasza funkcja findElements, zobaczmy czy ją rozumiemy:
function findElements(selector) {
return Array.from( document.querySelectorAll(selector) );
}
Teraz jej odpowiednik w postaci generatora:
function* queryAll(selector){
let elems = Array.from(document.querySelectorAll(selector));
yield *elems;
}
Użycie bardzo proste:
window.addEventListener('DOMContentLoaded', function(){
for(let para of queryAll("p")){
console.log(para.textContent);
}
//bla bla bla
//bla bla
//bla bla bla234
});
Żeby nie było za krótko, napiszmy sobie jeszcze funkcję isGenerator:
function isGenerator(fn) {
return fn.constructor.name === 'GeneratorFunction';
}
console.log(isGenerator(queryAll));
//true
console.log(isGenerator(findElements));
//false
Możemy sprawdzać, czy funkcja jest generatorem, czy nie.