Можете ли вы использовать yield для вызова не асинхронного вызова метода?
Функция генератора
function* generatorFunction () {
var asyncResult = yield doSomethingAsync();
console.log(asyncResult)
var nonAsyncResult = yield doSomethingNonAsync();
console.log(nonAsyncResult)
}
Поддерживающие методы
function doSomethingAsync() {
axios
.get("https://jsonplaceholder.typicode.com/posts")
.then(response => {
generatorInstance.next(response.data);
})
}
function doSomethingNonAsync(){
generatorInstance.next("foo");
}
Результат
Сначала console.log
работает должным образом, регистрирует результаты вызова axios, затем я получаю следующую ошибку JavaScript
Uncaught (в обещании) TypeError: Генератор уже работает в generatorFunction.next () в doSomethingNonAsync (async.html: 16) в generatorFunction (async.html: 23) в generatorFunction.next () в axios.get.then.response (async.html: 11)
https://jsfiddle.net/dsquod1m/