【发布时间】:2018-03-14 02:58:04
【问题描述】:
如何将 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中,我在ngOnInit中调用getNumber()并将其返回值赋给全局变量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"
乍一看似乎很容易,但我自己无法弄清楚。感谢您的帮助。
【问题讨论】:
-
抱歉,您只描述了您打算做什么。这段代码有什么问题?你卡在哪里了?
-
好吧,不,不要那样做。使用
isGreaterThanZero之前必须等待promise -
那么我该如何等待并将其返回的数据正确分配给
isGreaterThanZero? -
您正在等待分配它。您可能没有在使用它之前等待。 (如果要在模板中使用,可能需要重新应用,不过我不懂Angular)
-
上面的语法没有错。甚至他分配的顺序也是正确的。我猜他的承诺不会带来价值。