В конечном итоге я хочу отобразить модальное значение для пользователя, если определенное условие выполнено после X секунд выполнения приложения.
Однако я получаю предупреждение об установке таймера на длительный период времени (несколько минут) на android, но у моего таймера есть только несколько секунд.
const surveyCheckTime = 3000; // X = 3 seconds
const App = () => {
// First Time Modal State
const [surveyVisibility, setSurveyVisibility] = useState(false);
const handleSurveyOpen = () => {
setSurveyVisibility(true);
};
const handleSurveyClose = () => {
setSurveyVisibility(false);
};
useEffect(() => {
const timer = setTimeout(() => {
console.log('0:FROM_APP: Checking for condition: ');
getData().then(
keyValue => {
console.log('0:FROM_APP: Completion status: ', keyValue);
if (keyValue === 'false' || keyValue === undefined) {
handleSurveyOpen();
}
},
error => {
// console.log('Survery_Error: ', error);
},
);
}, surveyCheckTime);
return () => clearTimeout(timer);
}, []);
return (
<View>
...
<SurveyModal
surveyVisibility={surveyVisibility}
handleSurveyClose={handleSurveyClose}
/>
</View>
)
getData () - это асинхронная c функция, возвращающая keyValue как обещание.
export const getData = async (myKey = 'alreadyOpened') => {
try {
const value = await AsyncStorage.getItem(`@${myKey}`);
if (value !== null) {
// value previously stored
// console.log('FROM__getData: Stored previously: ', value);
return value;
}
} catch (e) {
// error reading value
console.log('ERROR:FROM__getData: Cannot read: ', e);
return 'fasle';
}
};
Все хорошо, и все работает, как задумано, но я продолжаю получать это предупреждение с другой последней строкой каждый раз:
(Saw setTimeout с длительностью Y мс) Y намного выше моего значения X
Есть этот вопрос, но он не совсем связан с пожарной базой в моем случае. (Хотя я использую Firebase для извлечения данных внутри другого компонента, но это не должно быть проблемой ) ЭТО ПРОБЛЕМА
Я изучил this , но большинство решений либо изменяют "node_modules", либо отключают предупреждение, и topi c в значительной степени устарел.
Было бы лучше, если есть более эффективное решение обработки тайм-ауты.
РЕДАКТИРОВАТЬ: "firebase": "7.13.1" является причиной проблемы при получении данных