В вашем коде this.sensorGenerator().next()
создайте новый генератор каждый раз, когда вы затем вызываете следующую функцию, каждый раз возвращая одно и то же первое значение.
Вам необходимо создать / создать экземпляр вашего генератора и сохранить его в переменнойгде-нибудь, а затем вызвать его следующую функцию.
var gen = this.sensorGenerator();
gen.next(); // first value
gen.next(); // second value
...
Вот рабочий фрагмент, показывающий, как это сделать.
const div = document.getElementById("osef");
const obj = {
_generator: undefined,
init: function() {
this._generator = this.sensorGenerator();
return this.getNextGenValue();
},
sensorGenerator: function*() {
yield 1;
yield 2;
yield 3;
yield 4;
return 5;
},
getNextGenValue: function() {
const v = this._generator.next();
console.log("getNextGenValue", v);
div.innerHTML = "generated value: " + v.value;
return v;
},
};
obj.init();
const btn = document.getElementById("btn");
btn.addEventListener("click", x => obj.getNextGenValue());
<button id="btn">Next generator value</button>
<div id="osef">Nothing yet</div>