myService中的getNameFromDB()
返回一个promise。当我从home.page.ts
调用此函数时,promise没有返回。我检查了关于SO的不同建议,但没有一个可以解决此问题。以下是我的代码:
myService.ts:
public getNameFromDB(){
return new Promise((resolve, reject) => {
let param = {
table: "info",
columns: "*",
where: "id=1"
};
this.dbService.select(param).then(
(res: []) => {
if (res.length != 0)
if (res[0]['name'] != '')
this.nameIsSet = true;
console.log('Name is set? ', this.nameIsSet);
resolve('success');
},
(err) => {
console.error('Error while reading info: ', err);
reject(err);
}
).catch(e => {
console.error('[myService.ts] catch error: ' + e);
reject(err);
});
}) // close promise
} //close function
字符串
home.page.ts:
this.myService.getNameFromDB().then(
(res)=>{ console.log('1. Name is set.')},
(err)=>{ console.log('2. Some error.')}
)
.catch(e => {
console.error('3. catch error: ' + e);
});
型
什么是代码行为??在控制台中我可以看到:name is set? true
表示myService
中的getNameFromDB()
,并且应返回resolve('success');
,但未显示home.page.ts
中的三个日志。
在我看来,承诺是没有返回,因为既没有在then
中的日志,也没有在catch
中的日志显示!
1条答案
按热度按时间piah890a1#
这不是一个离子问题,而是一个一般的TS/JS问题。你不应该使用
return new Promise()
,而应该使用try/catch和aprc/await。字符串
}
然后打电话:
型