小编mfa*_*mfa的帖子

Angular HttpClient 可观察到未完成

我有以下代码:

// in a service
downloadCSV(): Observable<Blob> {
  return this.httpClient.get(`${apiUrl}/a.csv`, {responseType: 'blob'});
}
// in component
onDownloadClicked(event: MouseEvent) {
  this.downloading = true;
  this.service.downloadCSV()
    .pipe(finalize(() => this.downloading = false))
    .subscribe(
      (data: Blob) => {
        console.log(data);
      },
      (error) => {
        console.error(error);
        alert('Sorry, something wet wrong. Try again.');
      },
      () => {
        console.log('completed!');
      }
    );
}
Run Code Online (Sandbox Code Playgroud)

数据已正确记录,但“已完成!” 不记录并且永远不会调用 Finalize。

编辑:

因此,经过进一步调查,问题似乎与添加 auth 标头的拦截器有关。

如果拦截器被绕过(并且在服务器上禁用了身份验证),则可观察对象将完成而不会出现错误。

我不明白为什么会发生这种情况。可能与请求被克隆有关?

//interceptor code
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  let scope: string;
  // only inject tokens for the following …
Run Code Online (Sandbox Code Playgroud)

javascript observable rxjs angular angular-httpclient

8
推荐指数
1
解决办法
3266
查看次数

为什么我的BackGroundWorker线程中的相同代码比我的GUI线程中的代码慢得多?

我正在尝试创建一个ac#WinForms应用程序,用于搜索和突出显示RichTextBox中的文本.我创建了两种搜索方法:一种在GUI线程中运行,另一种在BackGroundWorker中运行.两种方法中的逻辑基本相同.但是,BGW中的代码运行速度要慢得多.

请看下面的结果:

搜索常用关键字的0.25MB文本文件:GUI:2.9s - BGW:7.0s
1MB搜索常用关键字的文本文件:GUI:14.1s - BGW:71.4s
5MB搜索常用关键字的文本文件:GUI:172s - BGW:1545s

我觉得奇怪的是,这两种方法所花费的时间之间的关系不是关于搜索大小的线性关系.

该应用程序将用于搜索最大10MB的文件,因此这很重要.我想使用后台工作程序,以便用户可以看到进度并在执行搜索时继续读取文件.

请参阅以下两种方法的代码:

    // background search thread
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        // Get the BackgroundWorker that raised this event.
        BackgroundWorker worker = sender as BackgroundWorker;

        RichTextBox rtb = new RichTextBox();
        RichTextBox results = new RichTextBox();
        rtb.Rtf = e.Argument as string;  //recive text to be searched

        int hits = 0; // track number of hits
        int pos = 0;  // track position in rtb
        int i = …
Run Code Online (Sandbox Code Playgroud)

.net c# performance backgroundworker winforms

6
推荐指数
1
解决办法
5275
查看次数