提问人:Abdurrehman Afridi 提问时间:10/30/2023 更新时间:10/30/2023 访问量:22
PostHogs onFeatureFlags 回调函数被多次调用
PostHogs onFeatureFlags callback function being called multiple times
问:
我正在开发一个 Angular 应用程序功能,在选择角色后,用户有 50% 的机会被重定向到屏幕 A 或屏幕 B,通过功能标志确定。我的问题是posthog.onFeatureFlags被多次调用,即使角色选择逻辑似乎只触发一次。
// in template
<div *ngFor="let role of roles">
<app-role-card
(click)="onRoleSelected(role.role, role.roleValue)"
>
</app-role-card>
</div>
// in ts file
onRoleSelected(role: Role, roleValue: RoleValue): void {
this.postHogService.sendEvent(eventNames.slp_signup_roleSelectionComplete_NW00, {
$set: { up_signup_profile_role: role },
ep_roleSelected: role,
});
console.log('roles selected');
posthog.onFeatureFlags(() => {
console.log('onfeature flag called I am in designation comp');
const relevantFeatureFlag = this.roleToFeatureFlagMap[role];
const featureFlagPayload = getFeatureFlag(relevantFeatureFlag)
const destinationRoute = this.getDestinationRoute();
this.router.navigate([destinationRoute]);
});
}
- 我看到选择的角色只记录了一次。
- 事件slp_signup_roleSelectionComplete_NW00触发一次。
- 但是,名为 I am in designation comp 的 onfeature 标志会多次记录,如以下屏幕截图所示: 日志
为了获得更多上下文,在此之后还有另一个选择屏幕,当用户在该屏幕上选择一个选项时,即使我没有调用该组件,也会再次记录。这表明组件中的 posthog.onFeatureFlags 正在被重新调用。
以下是 posthog 在项目中的设置方式onfeatureflag called I am in designation comp
posthog.onFeatureFlags
designation
main.ts
import { init as initPostHog } from './app/shared/postHog/posthog';
initPostHog();
在posthog.ts
export function onFeatureFlags(cb: any): void {
posthog.onFeatureFlags(cb);
}
export function init(): void {
posthog.init(environment.POSTHOG_API_KEY, {
api_host: environment.POSTHOG_API_HOST,
});
}
export function getFeatureFlag(label: string): string | boolean | undefined {
return posthog.getFeatureFlag(label);
}
export function capture(eventName: string, eventData: any): void {
if (!environment.cs) {
posthog.capture(eventName, eventData);
}
}
任何关于这里出问题的地方的指示。
我尝试更改检测策略,但没有奏效。
在构造函数或 ngOnInit 中调用功能标志有效,并且函数只调用一次,但我不想在每次渲染时调用多个功能标志(每个角色一个),只想在选择角色后调用相关功能标志。
由于我需要重定向用户,因此我只想被调用一次,如果稍后再次调用,则用户将再次被重定向。
如何阻止它再次被调用?posthog.onFeatureFlags
答: 暂无答案
评论