首页 > 解决方案 > 无法在函数离子之外获得承诺值

问题描述

我试图在我的函数之外获得承诺的价值,但它返回未定义

这是我尝试过的代码:

主页.ts

class Home{

dd:any;

constructor(public dbHelpr:DbHelperProvider){

}

getData(){

   this.dbHelpr.getRecordById("51").then(function(res:any){

               dd = res
                console.log("dd in "+dd);

              }); 

              console.log("dd out "+dd);
           }

}

DbHelperProvider.ts

getRecordById(_id){

    return new Promise(resolve => {
      this.db.get(_id).then(function (doc) {

        resolve(doc);
      }).catch(function (err) {
        console.log(err);
        resolve("fail");
      });
    })

  }

我的日志显示: dd inside abcdef

dd 在未定义之外

我该如何解决这个问题?

先感谢您!

标签: angulartypescriptionic-frameworkionic2ionic3

解决方案


因为console.log("dd out "+dd);之前被调用console.log("dd in "+dd);(因为 promise 的异步性质),因此你得到 undefined for dd out

分配给iedoc里面的全局变量.then

  this.db.get(_id).then(function (doc) {

    resolve(doc);
    // assign to global var here.
  })

推荐阅读