refactor: 处理器重构为使用Async

This commit is contained in:
jackfiled 2024-01-24 21:32:14 +08:00
parent 78c6a806bf
commit 5f8db267d9
3 changed files with 7 additions and 9 deletions

View File

@ -4,7 +4,7 @@ namespace YaeBlog.Core.Abstractions;
public interface IPostRenderProcessor public interface IPostRenderProcessor
{ {
BlogEssay Process(BlogEssay essay); Task<BlogEssay> ProcessAsync(BlogEssay essay);
string Name { get; } string Name { get; }
} }

View File

@ -4,7 +4,7 @@ namespace YaeBlog.Core.Abstractions;
public interface IPreRenderProcessor public interface IPreRenderProcessor
{ {
BlogContent Process(BlogContent content); Task<BlogContent> ProcessAsync(BlogContent content);
string Name { get; } string Name { get; }
} }

View File

@ -112,11 +112,11 @@ public class RendererService(ILogger<RendererService> logger,
{ {
ConcurrentBag<BlogContent> processedContents = []; ConcurrentBag<BlogContent> processedContents = [];
Parallel.ForEach(contents, content => Parallel.ForEachAsync(contents, async (content, _) =>
{ {
foreach (IPreRenderProcessor processor in _preRenderProcessors) foreach (var processor in _preRenderProcessors)
{ {
content = processor.Process(content); content = await processor.ProcessAsync(content);
} }
processedContents.Add(content); processedContents.Add(content);
@ -127,11 +127,11 @@ public class RendererService(ILogger<RendererService> logger,
private void PostProcess(IEnumerable<BlogEssay> essays) private void PostProcess(IEnumerable<BlogEssay> essays)
{ {
Parallel.ForEach(essays, essay => Parallel.ForEachAsync(essays, async (essay, _) =>
{ {
foreach (IPostRenderProcessor processor in _postRenderProcessors) foreach (IPostRenderProcessor processor in _postRenderProcessors)
{ {
essay = processor.Process(essay); essay = await processor.ProcessAsync(essay);
} }
if (!essayContentService.TryAdd(essay.FileName, essay)) if (!essayContentService.TryAdd(essay.FileName, essay))
@ -139,8 +139,6 @@ public class RendererService(ILogger<RendererService> logger,
throw new BlogFileException( throw new BlogFileException(
$"There are two essays with the same name: '{essay.FileName}'."); $"There are two essays with the same name: '{essay.FileName}'.");
} }
logger.LogDebug("Post-Process essay: {}.", essay);
}); });
} }