Ваш метод searchCars вызывает p.then и возвращает результат в рамках этого вызова функции, но сам p не возвращается. По сути, searchCars ничего не возвращает.
function wrongSearchCars() {
var p = new Promise(function (resolve, reject) {
resolve('hello');
});
p.then((result) => {
return result;
});
}
function correctSearchCars() {
var p = new Promise(function (resolve, reject) {
resolve('hello');
});
return p.then((result) => {
return result;
});
}
wrongSearchCars().then(console.log) // undefined
correctSearchCars().then(console.log) // 'hello'
Кроме того, как вы можете видеть, поскольку блок .then внутри p внутри searchCars будет возвращать обещание, нет никаких оснований даже вызывать этот внутренний вызов .then.
searchCars() {
return new Promise(function (resolve, reject) {
db.transaction((tx) => {
tx.executeSql("SELECT * FROM Car;", [], (tx, results) => {
var temp = [];
var len = results.rows.length;
for (let i = 0; i < len; i++) {
temp.push(results.rows.item(i));
}
resolve(temp);
});
});
});
};
Это мое предположение, основанное на том, что я вижу. В вашем коде пропущено много всего, что не может быть выведено.