修改返回数据,然后在打字稿/离子中返回承诺
Posted
技术标签:
【中文标题】修改返回数据,然后在打字稿/离子中返回承诺【英文标题】:Modify return data then returning promise in typescript / ionic 【发布时间】:2018-12-06 17:09:20 【问题描述】:我有一个非常简单的问题,但我自己无法得到答案。 在我的 ionic 应用程序中,我正在从数据库中获取数据。我想要 修改来自我的数据
sqlite.execute(): Promise<Article[]>
然后返回promise,以便视图组件中的函数只需通过以下方式显示数据:
this.controllercomponent.getSearchResults( SearchTerm ).then( Res => this.Articles = Res );
现在我用嵌套的 promise 解决了这个问题,但是 ionic 返回一个错误:
return new Promise<Article[]>( Resolve =>
this.dbGetSearchResults( SearchTerm ).then( Res =>
//Modify articles array
Resolve(Res);
)
.catch( Err => this.showAlert( "Error fetching db data:", JSON.stringify(Err)); );
);
错误:
"originalErr": ,
"__zone_symbol__currentTask":
"type": "microTask",
"state": "notScheduled",
"source": "Promise.then",
"zone": "<root>",
"cancelFn": null,
"runCount": 0
【问题讨论】:
为什么需要把它包裹在new Promise
中?
一个承诺就够了吗?只是跳过视图组件中的then
和控制器组件中的return Res;
?我可以在“dbGetSearchResults”的then
回调中返回结果吗?
【参考方案1】:
如果不需要,最好避免使用Promise
构造函数。
function f()
return Promise.resolve()
.then(()=>this.dbGetSearchResults( SearchTerm ))
.then((Res)=>
/*Modify articles array*/
return Res;
)
.catch( Err => this.showAlert( "Error fetching db data:", JSON.stringify(Err)); );
【讨论】:
以上是关于修改返回数据,然后在打字稿/离子中返回承诺的主要内容,如果未能解决你的问题,请参考以下文章