大佬教程收集整理的这篇文章主要介绍了通过核心 API 和后台服务从 Angular 轮询,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试通过 BACkgroundservice 从 Angular 到 .NET Core API 进行轮询。
我将从调用 APIController 的 Angular 组件传递输入,这将触发 BACkgroundservice,并且输出会以频繁的间隔更新回 Angular 组件。
我有几个疑问。
APIController
[APIController]
[Route("[controller]")]
public class TESTController : ControllerBase
{
private Readonly ILogger<TESTController> _logger;
public TESTController(ILogger<TESTController> logger)
{
_logger = logger;
}
[httpGet]
public async Task<JsonResult> Get(CancellationToken cancellationToken)
{
var output = await Worker //How to call the worker here and then return the output?
return new JsonResult(output);
}
}
工人
public class Worker : BACkgroundservice
{
private Readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected overrIDe async Task ExecuteAsync(CancellationToken stopPingToken)
{
while (!stopPingToken.IsCancellationrequested)
{
_logger.Loginformation("Worker running at: {timE}",datetiR_275_11845@eOffset.Now);
await Task.Delay(1000,stopPingToken);
// Process inputs and return outputs in frequent intervals
}
}
}
角度组件
import { Component,Inject } from '@angular/core';
import { FormBuilder,FormGroup,FormControl,ValIDators } from '@angular/forms';
import { httpClIEnt } from '@angular/common/http';
import { Observable } from 'rxJs';
@Component({
SELEctor: 'app-home',templateUrl: './home.component.HTML',})
export class HomeComponent {
public testForm: FormGroup;
public test = new FormControl('1');
constructor(private fb: FormBuilder,http: httpClIEnt,@Inject('BASE_URL') baseUrl: String) {
const result = interval(2000)
.pipe(
switchMap(() => http.get(baseUrl + 'test')),map(res => res))
result.subscribe(res => {
this.x.SETVALue(res);
})
}
}
这里有很多东西,但我认为你只对呼叫工人感兴趣。
第一步。
在控制器构造函数中。
私有只读 ILogger _logger; 私有只读 Worker _worker; 公共测试控制器(ILogger 记录器,工人工人) { _logger = 记录器; _worker = 工人; }
compare_out : out std_logic_vector(1 downto 0)
启动worker有两种方法。 如果您继承了后台服务,则调用 StartAsync。 如果你已经实现了 IHostedservice,那么你必须自己做。 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio
注意:我怀疑这种方法不会为您提供更新,因为您正在等待请求完成并且在该结果不会返回之前。
更新
对于长时间运行的后台操作,上述方法将不起作用。为此,您必须做更多的工作。
注意:如果您想避免轮询,则可以根据用例使用 SignalR 或 websocket。
以上是大佬教程为你收集整理的通过核心 API 和后台服务从 Angular 轮询全部内容,希望文章能够帮你解决通过核心 API 和后台服务从 Angular 轮询所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。