Я не знаком с библиотекой, которую вы используете, но похоже, что вызов db.transaction
и затем tx.executeSql
ничего не возвращает, то есть это не Promise
, который разрешает / отклоняет с некоторым значением. Похоже, что он основан на обратном вызове, поэтому вам придется сделать это «вручную» и превратить его в Promise
.
Вот возможное исправление:
// mock for the `db` library you're using
const mockDb = {
transaction: callback => {
callback({
executeSql: (arg1, arg2, cb) => {
const user = { id: 1, name: "John Doe", age: 20 };
cb(null, user);
}
});
}
};
// utils/getUser.js
const getUser = () => {
return new Promise((resolve, reject) => {
const db = mockDb;
db.transaction(tx => {
tx.executeSql("...", "...", () => {});
});
db.transaction(tx => {
tx.executeSql("...", [], (_, result) => {
resolve(result);
});
});
});
}
// components/MyComponent.js
getUser()
.then(result => { console.log('result', result); })
.catch(error => { console.error(error); })
Надеюсь, это поможет.