angular 4将promise返回值赋给全局变量

时间:2018-03-13 18:39:37

标签: angular promise undefined

如何将promise中的返回值分配给外部/全局变量?

在我的service.ts中,我有一个返回数字的promise方法。

getNumber(username: string): Promise<number> {       
    return this.Test.deployed().then((instance) => {
        return instance.getNumber.call(username);
    })
    .then((value) => {    
      return this.itemsService.getSerialized<number>(value);
    })
    .catch((e) => {
        console.log(e);
    });
  }

在home.component.ts中,我在getNumber()中调用ngOnInit并将其返回值分配给全局变量isGreaterThanZero

isGreaterThanZero: boolean = false;

constructor(private service: myService){}

ngOnInit() {    
    ...
    var result = this.service.getNumber(userName);  

    result.then((value) => {
        if (value > 0) {
            this.isGreaterThanZero = true;
        }          
    })
}

和html,

<button type="button" [disabled]="isGreaterThanZero"
乍一看看起来很容易,但我自己无法弄清楚。感谢帮助。

1 个答案:

答案 0 :(得分:0)

this.service.getNumber(userName).then((value) => {
    if (value > 0) {
        this.isGreaterThanZero = true;
    }          
});

如果这不起作用,请确保您实际收到承诺中的值。也许找到了你的问题。

您可以通过插入alert()或console.log()来验证这一点。

this.service.getNumber(userName).then((value) => {
    alert('value from promise: ', value);
    if (value > 0) {
        this.isGreaterThanZero = true;
    }          
});