小编Lux*_*lem的帖子

如何在 Jetpack Compose Desktop 中加载字体?

在 Android 版 Jetpack Compose 中,您可以执行以下操作:


val fontFamily = FontFamily(
    Font(
        resId = R.font.my_font_400_regular,
        weight = FontWeight.W400,
        style = FontStyle.Normal
    ),
    Font(
        resId = R.font.my_font_400_italic,
        weight = FontWeight.W400,
        style = FontStyle.Italic
    )
)


Run Code Online (Sandbox Code Playgroud)

但对于桌面版,文件结构不同,我无法访问,R.font.my_font_400_regular因为“R”是 Android 资源功能。

kotlin android-jetpack-compose-text compose-desktop

11
推荐指数
2
解决办法
4468
查看次数

为什么 setTimeout() 会使我的应用程序滞后,但 Rxjs timer().subscribe(...) 不会?

我有一个组件,它以 100 毫秒的间隔“延迟加载”一些评论。

当我使用 setTimeout 时,它真的很滞后。

成分

<div *ngFor="let post of posts">
   <app-post [post]="post" ></app-post>
</div>

Run Code Online (Sandbox Code Playgroud)

这使我的应用程序滞后(平均 fps 14,空闲时间 51100 毫秒):

while(this.postService.hasPosts()){
  setTimeout(()=> {
   this.posts.push(this.postService.next(10));
  },100);
}

Run Code Online (Sandbox Code Playgroud)

这使我的应用程序流畅(平均 fps 35,空闲时间 40800 毫秒)

<div *ngFor="let post of posts">
   <app-post [post]="post" ></app-post>
</div>

Run Code Online (Sandbox Code Playgroud)

有什么解释,为什么 rxjs 计时器工作得更好?

我用 Firefox 做了一个运行时分析。在第一个示例中,帧速率降至 14 fps。在另一个示例中,帧速率降至 35 fps。

甚至空闲时间也减少了 20%。

这个方法更流畅(平均fps 45,空闲时间13500ms):

while(this.postService.hasPosts()){
  setTimeout(()=> {
   this.posts.push(this.postService.next(10));
  },100);
}

Run Code Online (Sandbox Code Playgroud)

javascript rxjs typescript angular

9
推荐指数
1
解决办法
242
查看次数

httpClient 的 http 操作总是单值 Observables 吗?他们能以某种方式发出不止一个值吗?

我很难掌握 http Observables 的工作方式。

Http get 总是完成,当只有一个值到达但无法查找实现时。它们是否总是在错误或值到达后完成?

我和我的同事讨论了很多,因为在每个http操作中使用以下程序:


const sub = this.http.get( enviroment.baseUrl + '/users').pipe(take(1))
                                             .subscribe( value => {
                                              //do something with the value
                                               },
                                              error => consol.log(error.message));
Run Code Online (Sandbox Code Playgroud)

后来这个:

ngOndestroy():void{
    sub.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)

据我所知,pipe(take(1))不需要,因为 http 调用总是发出一个值。

响应或错误。

并且由于 observable 以一个值完成,因此不需要取消订阅。

如果我穿了,请纠正我。如果你有一些想法,我也很高兴能有官方消息来源。

非常感谢您提前

httpclient rxjs typescript angular

2
推荐指数
1
解决办法
372
查看次数