【问题标题】: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 回调中返回结果吗?

标签: typescript ionic-framework promise


【解决方案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)); });
}

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 2018-01-21
    • 2020-01-08
    • 2019-09-08
    • 2019-04-25
    • 1970-01-01
    • 2021-06-17
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多