Я пытаюсь вызвать функцию генератора внутри setInterval()
метода. Цель этого кода заключается в том, что он будет периодически запрашивать у определенного сервера некоторые данные, пока не получит ненулевой ответ. После получения ответа он вызовет storeAddress()
, который является функцией генератора, определенной в том же файле.
Приведенный ниже код дает мне такую ошибку:
SyntaxError: yield является зарезервированным словом (248: 6)
ПРИМЕЧАНИЕ : Я использую реактивный шаблон для создания своего приложения. Насколько я могу судить по поиску в Интернете, Babel выдает эту ошибку.
Я пытался const query = yeild call (setInterval, function(){magic code}, 10000)
. Это не дает ошибку, но magic code
никогда не выполняется.
Я пробовал const query = setInterval(function* () {magic code}, 10000)
с тем же эффектом, что и выше.
Я пробовал const query = setInterval(yield call(function(){magic code}, 10000)
с тем же эффектом, что и выше.
Я пробовал const query = yield call (setInterval, function(){magic code}, 10000)
с тем же эффектом, что и выше.
Я пробовал storeAddress(action.payload, balance).next()
внутри setInterval()
. Элемент управления работает внутри storeAddress()
, но внутри этой функции также есть вызовы генератора, которые никогда не вызываются. Фактически в этом случае ничего не выполняется после первого вызова генератора внутри storeAddress()
.
function* callSaveNewAddress(action){
const selectedNetwork = yield select(selectNetworkId());
let count = 1;
let balance = 0;
const query = setInterval(function () {
getAddressBalance(action.payload, selectedNetwork).then(res =>
{return balance = res.data.mempool_balance});
if(balance > 0) {
yield call (storeAddress, action.payload, balance);
clearInterval(query);
} else if(count == 90) {
clearInterval(query);
console.log("Nothing received in 15 minutes");
}
}, 10000);
}
Итак, как мне вызвать storeAddress()
, который является функцией генератора, внутри обычной функции, такой как setInterval()
?