问题标签 [asynchronous]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3305 浏览

apache-flex - DDD 和异步存储库

我们正在开发一个使用 RMI 和 JMS 连接到 Java 后端的富客户端(用 Flex 编写)。我正在考虑以 DDD 方式实现客户端,以便它具有用于域对象上的 CRUD 操作的存储库。

然而,问题是所有后端通信都是异步发生的,我无法强制客户端等待继续,直到它收到响应。这意味着,在低级别上,我可以调用远程对象上的方法并获得 AsyncToken 作为返回值。然后我可以监听 asynctoken 上的事件以查看调用是通过还是失败。然而,这打破了存储库背后的主要思想,向客户隐藏技术细节。

我猜可能有两种选择:

  1. 让存储库上的方法返回 asynctoken,这对我来说似乎是一个混乱的解决方案
  2. 让这些方法返回一个空集合(例如 findAll),当收到响应时该集合将被填充。

两者都有优点和缺点,我想从你们那里得到一些意见。

(更进一步,什么是好的缓存策略?根据情况,我不希望存储库在每次向它请求所有实体时都调用服务器。这将如何影响存储库上方法的签名。 )

0 投票
3 回答
1615 浏览

c# - 使用部分类型信息结束异步委托调用

当使用 BeginInvoke/EndInvoke 模式编写异步方法实现时,代码可能如下所示(为了避免您猜测这是一个围绕缓存的异步包装器):

这非常有效,因为它知道委托的类型是什么,因此可以强制转换。但是,当您有两个方法时,它开始变得混乱Put,因为尽管该方法返回 void 您似乎必须将其强制转换为强类型委托以结束调用,例如

我希望有一种更简洁的方法来做到这一点,因为我唯一关心委托的是返回类型(在本例中为 void),而不是提供给它的参数。但我绞尽脑汁问办公室里的其他人,谁也想不出答案。

我知道一个解决方案是编写一个 custom IAsyncResult,但这是一项艰巨的任务,因为潜在的线程问题围绕着诸如延迟实例化之类的事情WaitHandle,我宁愿拥有这个看起来有点 hacky 的代码而不是沿着这条路线走。

关于如何在没有级联is检查的情况下结束调用的任何想法?

0 投票
2 回答
2956 浏览

.net - 使用异步委托或 ThreadPool.QueueUserWorkItem 进行大规模并行?

我有一个 .NET 应用程序,它在批量导入中处理大约 300,000 条记录,每条记录需要几秒钟,所以我想并行化它。ProcessWithAnsycDelegates()在下面的代码中,和有什么区别ProcessWithThreadPool()

0 投票
10 回答
188256 浏览

c# - 如何异步使用 HttpWebRequest (.NET)?

如何异步使用 HttpWebRequest (.NET, C#)?

0 投票
3 回答
8508 浏览

c# - .net/C# 中的网络

有人可以指出我学习如何在 C#/.net 3.5 中建立网络的正确方向吗?欢迎代码示例和解释。基本上我正在寻找如何做异步/多线程服务器/客户端模型。

我对如何使用 WinSock 在 C++ 中完成此任务的基础知识相当满意,但尽管我的所有研究似乎都无法在 C# 中掌握这个概念。

感谢您提供的任何帮助:)

0 投票
3 回答
1272 浏览

multithreading - 从工作线程调用更新 UI 线程是如何工作的?

如果我在处理某些数据的线程中有一个函数,那么它会调用一个回调函数来更新 UI 中的状态。

如果 UI 需要时间来处理回调函数,那么它就没有多大用处。除了在回调函数中处理更新之外,它是否应该以不阻塞的方式向 UI 发送某种消息?

我的意思是当在处理函数中并且我调用更新状态函数时,这应该立即返回到处理函数,然后在更新中它可以等待所有它想要的 UI 更新完成。

还是我需要第三个线程来处理向 UI 发送更新数据?

0 投票
3 回答
1188 浏览

.net - 向 Windows GUI 线程发送消息

我注意到,当您创建一个 Web 服务对象(从 SoapHttpClientProtocol 继承)并使用 Async 方法时,它会在 Windows GUI 线程上进行回调。

  1. 有谁知道这是如何工作的?
  2. 我怎样才能达到同样的目的。

如果我确定回调总是在 gui 线程上发生,我认为这将使我不必在我的 GUI 表单中检查 InvokeRequired。

0 投票
13 回答
179796 浏览

php - PHP中的异步shell exec

我有一个 PHP 脚本,它需要调用一个 shell 脚本,但根本不关心输出。shell 脚本进行了许多 SOAP 调用并且完成速度很慢,所以我不想在 PHP 请求等待回复时减慢它的速度。事实上,PHP 请求应该能够在不终止 shell 进程的情况下退出。

我研究了各种exec(), shell_exec(),pcntl_fork()等功能,但似乎没有一个能提供我想要的东西。(或者,如果他们这样做,我不清楚怎么做。)有什么建议吗?

0 投票
2 回答
1553 浏览

c# - C# 中基于事件的异步;任何通用的重构可能吗?

一些 API,如 WebClient,使用基于事件的异步模式。虽然这看起来很简单,并且可能在松散耦合的应用程序中运行良好(例如 UI 中的 BackgroundWorker),但它并不能很好地链接在一起。

例如,这是一个多线程程序,因此异步工作不会阻塞。(想象一下,这是在一个服务器应用程序中调用数百次——你不想阻塞你的 ThreadPool 线程。)我们得到 3 个局部变量(“状态”),然后进行 2 个异步调用,结果是首先馈入第二个请求(因此它们不能并行)。状态也可能发生变异(易于添加)。

使用 WebClient,事情最终会像下面这样(或者你最终创建了一堆对象来充当闭包):

}

有没有一种通用的方法来重构这种基于事件的异步模式?(即不必为每个这样的 API 编写详细的扩展方法?) BeginXXX 和 EndXXX 使它变得容易,但这种事件方式似乎没有提供任何方式。

0 投票
3 回答
21514 浏览

c# - 在 C# Web 服务中调用异步调用

我在 Web 服务中使用第三方资源(.dll),我的问题是,调用此资源(调用方法)是异步完成的 - 我需要订阅一个事件,以获得答案我的请求。我如何在 ac# web 服务中做到这一点?

更新:

关于Sunny 的回答

我不想让我的网络服务异步。