标签: asynchronous

Spring boot WebClient 真的是异步的吗?

WebClient 是一个响应式客户端,它提供了 RestTemplate 的替代方案。据说是异步的。

但我怀疑以下代码:

 WebClient.create()
            .method(HttpMethod.GET)
            .uri("http://localhost:8080/testApi")
            .retrieve()
            .bodyToMono(String.class)
Run Code Online (Sandbox Code Playgroud)

它什么都不做。没有发送任何 http 请求。好像没有触发。除非我通过 add 触发它.block()。但它使事情不是“异步”。

另外,我所知道的是使用.subscribe()它使事情看起来异步。

但是 WebClient 是为此设计的吗?使用 WebClient 的最佳实践是什么?

java asynchronous spring-boot spring-webflux

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

程序在等待时崩溃?

我用 C# 编写了一个灯泡生产模拟程序。当用户在命令行界面中输入选项 1 时,异步函数开始模拟生产 10,000 个灯泡,其中 5% 的灯泡有缺陷。当检测到有缺陷的灯泡时,观察者会收到通知,并在命令提示符中显示一条消息。在新的解决方案中,我试图避免“即发即忘”的问题。相反,我将任务收集在一个列表中。可以使用选项 2 评估任务的结果。为此,必须使用await 来等待任务完成。不幸的是,当用户输入选项 2 时,程序在 main 方法中崩溃。有人能告诉我为什么吗?

Console.WriteLine("Bulb Production Monitoring!");
Main();
static async Task Main() {
    List<Task<string>> taskList = new List<Task<string>>();
    string input="";
    int maschineID=1;
    Random rndGenerator = new Random();
    Production prod=new Production();
    Console.WriteLine("1: starts a production maschine");
    Console.WriteLine("2: analyses the results");
    Console.WriteLine("3: exits the production process");
    while(!input.Equals("exit")){
        input=Console.ReadLine();
        switch(input){
            case "1": 
                prod.registerObserver(new Observer());
                taskList.Add(prod.startMaschine(maschineID, rndGenerator)); 
                maschineID++; 
                break;
            case "2":
                // while tasklist contains an element
                while (taskList.Any()){

                    // waiting for …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await

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

为什么在闭包完成相同的函数之前执行延迟块

我在Swift 2.0中编写了以下函数来添加一个地图注释,用于CLGeocoder()解析给定坐标的位置名称.我使用一个defer块来获取已解析的位置名称,但是,在闭包完成之前,延迟块似乎已完成.为什么?

以下是我的代码:

func addAnnotation(gestureRecognizer: UIGestureRecognizer) {
    var locationNameStr = ""
    defer {
        let newPin = Pin(dictionary: locationDictionary, context: sharedContext)
        newPin.name = locationNameStr

        do {
            //persist the new pin to core data
            try sharedContext.save()
            showPinOnMap(newPin)
        } catch let error as NSError {
            print("error saving the new pin in context")
        }
    }

    // use CLGeocoder to resolve the location name as title of the annotation
    CLGeocoder().reverseGeocodeLocation(CLLocation(latitude: newCoordinate.latitude, longitude: newCoordinate.longitude), completionHandler: {(placemarks, error) -> Void in

        if error …
Run Code Online (Sandbox Code Playgroud)

asynchronous ios deferred clgeocoder swift

-3
推荐指数
2
解决办法
3255
查看次数

异步素数计算

我有以下计算第n个素数的函数(不是我的函数):

public long FindPrimeNumber(long n)
            {
                int count = 0;
                long a = 2;
                while (count < n)
                {
                    long b = 2;
                    int prime = 1;// to check if found a prime
                    while (b * b <= a)
                    {
                        if (a % b == 0)
                        {
                            prime = 0;
                            break;
                        }
                        b++;
                    }
                    if (prime > 0)
                        count++;
                    a++;
                }
                return (--a);
            }
Run Code Online (Sandbox Code Playgroud)

我想在wpf应用程序中调用此函数,在其中输入数字,然后使用按钮调用该函数:

private void one_Click(object sender, RoutedEventArgs e)
        {
            answer = FindPrimeNumber(Convert.ToInt64(txtprime.Text));
            MessageBox.Show(answer.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

这很好用,但是当您开始输入一百万个数字时,它会变慢并阻塞UI。

因此,我想使按钮异步,以便它不会阻塞UI。

这是我尝试的方法: …

c# wpf asynchronous async-await

-3
推荐指数
1
解决办法
883
查看次数

如何使一系列任务按顺序运行?

我有一系列Tasks,我想从az顺序运行.

我想同步执行这些调用starting from 1 and ending at N.

  • task1 DeleteSubProjects ... 1
    • TASK1 DeleteActivities ... 2
      • TASK1 DeleteActivityPersons ... 3
      • task2 DeleteThreads ... 4
        • task1 DeleteCommunicationThreadContentTags ... 5
        • task2 DeleteCommunicationThreadParticipants ... 6
        • task3 DeleteMessages
        • task4 删除(communicationThread)
      • task3 DeleteActivityDocuments
      • task4 DeleteActivityNotes
      • task5 DeleteActivityMachines
      • task6 DeleteActivityLinks
      • task7 DeleteActivityLinks
      • task8删除(活动)
    • task2 DeleteSubProjectDocuments
    • task3 DeleteSubProjectNotes
    • task4 DeleteSubProjectPersons
    • task5 DeleteSubProjects
    • task6删除(子项目)
  • task2 deleteProjectNotes
  • task3 deleteProjectDocuments
  • task4 deleteActivities
  • task5 deleteProjectPersons

这是代码的样子

public async Task DeleteProject(Project project)
{

    var deleteSubProjects = …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous task-parallel-library

-3
推荐指数
1
解决办法
62
查看次数

异步http请求处理

我试图以这种方式异步处理Go中的HTTP请求:

  1. 我将处理函数传递给HTTP服务器
  2. 在处理程序中,我将HttpRequest/HttpResponse对象存储在切片或地图中
  3. 从处理程序函数返回时 - 响应不会返回给客户端,但连接仍保持打开状态
  4. 当从另一个源接收"some"异步输入时,我从内存中获取相关的HttpRequest/HttpResponse对象,写入响应并关闭连接.

我的目标与Java中的Jetty-Continuation非常相似.

如何在GoLang中实现这样的行为?

asynchronous http go

-3
推荐指数
1
解决办法
448
查看次数

带异步管道的 Mat-table [dataSource]

只是花了几个小时试图找出为什么<table mat-table [dataSource]="data|async">......在发出新值时没有更新data......

asynchronous observable angular-material angular

-3
推荐指数
1
解决办法
9554
查看次数

使用F#异步工作流程

由于这个问题很大,我会就这个问题发表看法,这样你就可以简单地告诉我,我是否正确.如果没有,在哪里纠正.如果我的观点是肤浅的,请提供F#异步使用的概述.在μ理解中,要编写异步程序,您需要将异步代码放入async {expression}等"异步"块中,并使用"let!" 或"使用!" 要将名称绑定到基元,那么您需要使用方法来运行此异步表达式,如"Async.Run".此外,您可以使用异常处理来处理异常,并在必要时取消取消.我也知道在F#核心库中定义了几个原语,以及I/O操作的F#扩展.我只需要确定这些事情之间的关系.如果您认为我对异步工作流程的看法是肤浅的,请概述一下我上面提到的用法.非常感谢你!

f# asynchronous

-4
推荐指数
1
解决办法
138
查看次数

为什么我不能等待'System.Linq.IQueryable

我有以下存储库方法: -

  public  IQueryable<TSet> getAllScanEmailTo()
        {
         return   t.TSets.Where(a=>a.Name.StartsWith("ScanEmail"));

        }
Run Code Online (Sandbox Code Playgroud)

这被称为如下: -

var emailsTo = repository.getAllScanEmailTo().ToList();
Run Code Online (Sandbox Code Playgroud)

现在我试图改变以上使用异步,所以我修改我的存储库方法如下: -

 public async Task<  IQueryable<TSet>> getAllScanEmailTo()
        {
         return  await t.TSets.Where(a=>a.Name.StartsWith("ScanEmail"));

        }
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误: -

Error   1   Cannot await 'System.Linq.IQueryable<Final.Models.TSet>'
Run Code Online (Sandbox Code Playgroud)

c# linq asynchronous entity-framework entity-framework-6

-4
推荐指数
1
解决办法
2370
查看次数

为什么 JavaScript 在没有 Web API 调用的情况下表现得像同步

我知道 JavaScript 本质上是同步的。因此,当我使用 Web API 调用函数时,它会同步执行:

setTimeout(function(){
  console.log('1');
}, 2000);

console.log('2');
Run Code Online (Sandbox Code Playgroud)

它将打印“2”然后是“1”。

但是当我运行像 for 循环这样的循环并增加迭代时,它会同步执行:

var first = function(){
    for(var i=0;i<=100000000;i++){
        if(i==100000000){
            console.log('first')
        };
    };
};

var second = function() {
    console.log('second')
};

var a = function() {
    first();
    second();
}

a();
Run Code Online (Sandbox Code Playgroud)

它将分别打印第一秒。

那么,JavaScript 是否与本机代码同步执行?

javascript asynchronous dom-events

-4
推荐指数
1
解决办法
417
查看次数

async-await如何在使用事件循环的应用程序(如Windows窗体)中实现响应?

据我所知,UI应用程序有一个主线程,其循环等效于

while(true)
{
   var e = events.Dequeue(); // get event from the queue
   e(); // run event
}
Run Code Online (Sandbox Code Playgroud)

我感到困惑的e()将是"畅通",如果它是在顶部async- await链.让我们说e()最终要求

public async Task WaitOneSecondAsync()
{
    await Task.Delay(1000);
    Console.WriteLine("Done waiting 1 second!");
}
Run Code Online (Sandbox Code Playgroud)

一旦主线程命中await Task.Delay(1000);它就不会"继续"到while循环的下一次迭代.所以你能解释一下这是如何解锁的吗?也许有代码示例?

.net c# asynchronous winforms async-await

-4
推荐指数
1
解决办法
281
查看次数

如何找出Node.js的执行顺序?

我目前正在尝试测试一些Node.js代码。现在,我试图弄清楚为什么我的代码console.log()相对于代码执行顺序而言是不同的顺序。这与操作系统相关的Node.js函数调用有关。

我的脚本按顺序执行此操作:

//First
fs.readdir(){ //read from a directory all the available files
   console.log some stuff #a
}

//Second
fs.readFile(){ //read entire text file
   console.log some stuff #b
}

//Third
//create readline interface using fs.createReadStream(filedir) then

interface{ //read from text file line by line
   console.log some stuff #c
}
Run Code Online (Sandbox Code Playgroud)

函数a使用路径:__dirname +'/ text_file /'
函数b和c使用路径:__dirname,' /text_file/ text1.txt'

输出:

a
c
b
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么发生此命令吗?我不是操作系统方面的专家,也不是Node.js在后台发生的事情。如果我要依赖此命令,是否会使我的应用程序混乱?

javascript asynchronous synchronous fs node.js

-4
推荐指数
1
解决办法
1504
查看次数