Получение результата от асинхронного запроса

React Native, пробую использовать БД SQlite, хочу при открытие приложения на телефоне подгружать из SQlite в хук как начальный стейт всю базу раннее сохранённых данных, в моём случае приложение Todo List. Проблема в том, что я не могу получить данные из БД, зная что запрос асинхронный с помощью async/await & promise, имею следующий код.

    async function getData() {
        return await new Promise((resolve, reject) => {
            db.transaction(tx => {
                tx.executeSql(
                    'SELECT * FROM test', [],
                    (_, {rows}) =>
                        resolve(rows));
            },error => {
                reject(error);
            });
        })
    }
    
    let result = getData().then(data => result = data);
    console.log(result)

Console.log выводит следующее

 Promise {
      "_U": 0,
      "_V": 0,
      "_W": null,
      "_X": null,
    }

Ответы (1 шт):

Автор решения: itmrgodsend

Я изучил ещё много информации по этой теме и решил эту проблему самостоятельно, оставлю свой код тут, возможно кому-то будет полезен.

function getData() {
    return new Promise((resolve, reject) => {
        db.transaction(tx => {
            tx.executeSql(
                'SELECT * FROM test', [],
                (_, {rows}) =>
                    resolve((rows._array)));
        }, error => {
            reject(error);
        });

    })
}

useEffect(() => {
        getData().then(data => setTodos(data))
    }, []);

    const [todos, setTodos] = useState([])

В итоге благодаря useEffect приложение единожды получает данные из Promise и сохраняет его в useState, без конфликтов при дальнейшем использовании.

→ Ссылка