代码之家  ›  专栏  ›  技术社区  ›  bbusdriver

角度4将承诺返回值赋给全局变量

  •  1
  • bbusdriver  · 技术社区  · 6 年前

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

    为我服务。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);
        });
      }
    

    在家里。组成部分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 回复  |  直到 6 年前
        1
  •  0
  •   user6749601 user6749601    6 年前
    this.service.getNumber(userName).then((value) => {
        if (value > 0) {
            this.isGreaterThanZero = true;
        }          
    });
    

    如果这不起作用,请确保您确实从您的承诺中获得了价值。也许是你的问题所在。

    您可以通过插入alert()或控制台来验证这一点。日志()。

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