无法从提供者那里获得价值 - 离子2

时间:2017-09-07 13:18:55

标签: typescript ionic2

我已经使用构造函数代码创建了一个提供程序:

constructor(private storage: Storage) {

    this.datas = null;
    this.getUserinfoDB()
        .then(
        data => {
            this.uid = data['id'];
            console.log("UID FROM PROVIDER "+this.uid);
        }
    );
}

我刚把它导入另一个ts文件: 像:

constructor(public crudStorageProvider: CrudStorageProvider) {                
  console.log("UID: " + crudStorageProvider.uid);
}

这个导入和所有的一切都很好:

但是console.log("UID: " + crudStorageProvider.uid);我在这里得到了未定义。

我的控制台订单是:

UID: undefined
UID FROM PROVIDER: 6  

谢谢,

1 个答案:

答案 0 :(得分:2)

从输出序列,很明显数据是在html { background-color: #fff; } body { margin: 50px; background-color: #00ff00; height: 200px; border: 1px solid; }之后设置的。

这是承诺异步性质的正常结果。

你的console.log("UID: " + crudStorageProvider.uid);应该有一个功能,如下所示:

CrudStorageProvider

然后致电

getUID(){
  if(this.uid){
     return Promise.resolve(this.uid);
  }else{
     return this.getUserinfoDB()
        .then(
        data => {
            this.uid = data['id'];
            console.log("UID FROM PROVIDER "+this.uid);
            return this.uid;
        }
    );
  }
}