在demo
需要flag
是true
才能进行其他的操作,然后flag
的值是由asyncFn
给的。
一开始实例化demo
之后立马调用了fnB
方法,但是因为asyncFn
的关系这时候flag
还没变为true
,所以又执行了一遍fnA
方法,请问大佬这里有办法只执行一遍fnA
吗?
function asyncFn(): Promise<boolean> {
return new Promise(resolve => {
setTimeout(() => {
resolve(true)
}, 1000)
})
}
class demo {
flag = false;
constructor() {
this.fnA()
}
private async fnA() {
this.flag = await asyncFn();
}
async fnB() {
if (!this.flag) await this.fnA();
}
}
const d = new demo();
d.fnB();
将flag替换成一个返回boolean的promise就可以了