Tym razem poznajemy generatory przyjmujące wartości. Jest to dość ciekawa lekcja i wchodzimy już na zaawansowaną znajomość JS.
Generator przyjmujący wartości:
function* createFromPrompt(){
let obj = {
};
obj.name = yield;
obj.age = yield;
yield obj;
}
Użycie:
let gen1 = createFromPrompt();
gen1.next();
gen1.next(prompt("Whats your name?"));
let out = gen1.next(prompt("Whats your age?"));
console.log(out.value);
//{name: "me", age: 18}
Teraz funkcja wrapująca:
function generateFromPrompt(gen){
gen.next();
let name;
let age;
do {
name = prompt("Whats your name");
} while (name.trim() === "");
gen.next(name);
do {
age = prompt("Whats your age");
} while(Number.isNaN(parseInt(age)));
return gen.next(age);
}
let outObj = generateFromPrompt(gen1);
console.log(outObj);
//{name: "me", age: 18}