gpt4 book ai didi

javascript - 基于 Angular 中的 promise 结果取消间隔

转载 作者:行者123 更新时间:2023-12-04 08:52:39 26 4
gpt4 key购买 nike

我有这个业务逻辑,我想每 1 秒检查一次服务中的一些数据,如果该数据返回某些属性为真,我想取消间隔。例如:

  someFn() {
this.interval = setInterval(this.getData, 1000, param1, param2);
}

private async getData(param1: string, param2: string) {
const data = await this.service.getSomeData(param1);
if (data && receipt.success) {
console.log('SUCCESS!');
console.log('Clearing interval', this.interval);
clearInterval(this.interval);
}
}
但是,即使我正在输入 if 块并且打印出 SUCCESS,间隔也不会停止执行。间隔似乎未定义。我猜这是因为一些 promise 魔法,但我不太明白为什么。任何帮助表示赞赏。
编辑:按钮调用 someFn这是。
<button class="btn btn-primary" (click)="myService.someFn()">Do Logic</button>
Edit2:如果我在 someFn 里面 console.log(this.interval)功能正下方我设置它,它记录一个 id。但是在 getData 里面, this.interval未定义。

最佳答案

我已经想通了。我没有传递对 setInterval 的引用,而是在回调中执行函数。所以:

 someFn() {
this.interval = setInterval(this.getData, 1000, param1, param2);
}
变成
 someFn() {
this.interval = setInterval(() => this.getData(param1, param2), 1000);
}
它有效。

关于javascript - 基于 Angular 中的 promise 结果取消间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64018100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com