问题标签 [asynccallback]

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 回答
4183 浏览

gwt - GWT AsyncCallback 在等待响应时会执行多远?

如果我要从一个函数(全部用 Java 编写)调用:

我知道注释 A 中的内容将执行,同时非同步 randomMethod 将执行,B 中的注释将执行。

不过,我想知道,当 randomMethod 正在执行时(如果它需要足够长的时间),该函数是否会返回到它的调用者(在本例中是方法“hello”)并开始执行注释 C 中的代码?还是 executeCallback 会等待 randomMethod 完成后再返回?

如果是前者,假设我需要在我可以继续评论 C 之前触摸 randomMethod 所触及的信息,我怎样才能让它“等待”以确保会是这种情况?

0 投票
1 回答
614 浏览

database - Mongoose 回调函数如何知道第二个参数是什么 db.query 结果?

匿名回调函数如何知道下面示例中的“项目”(或者实际上是在 Mongoose 查询之后的以下回调函数中的第二个参数,因为它们可以被称为任何东西)是/应该是来自数据库的结果,如果有的话?因为我们真的可以称“项目”为任何东西,所以我看不到这里的沟通渠道。

谢谢!

0 投票
4 回答
23470 浏览

c# - C# Socket.Receive 消息长度

我目前正在开发一个可以接受来自多台客户端计算机的多个连接的 C# Socket 服务器。服务器的目标是允许客户端“订阅”和“取消订阅”服务器事件。

到目前为止,我已经在这里愉快地看了一下:http: //msdn.microsoft.com/en-us/library/5w7b7x5f (v=VS.100).aspx和http://msdn.microsoft.com/ en-us/library/fx6588te.aspx的想法。

我发送的所有消息都是加密的,因此我将我希望发送的字符串消息转换为 byte[] 数组,然后在将消息长度预先附加到数据并通过连接发送出去之前加密数据.

让我印象深刻的一个问题是:在接收端,当只收到一半的消息时,Socket.EndReceive()(或相关的回调)似乎有可能返回。有没有一种简单的方法来确保每条消息都被“完整”接收并且一次只接收一条消息?

编辑:例如,我认为 .NET / Windows 套接字不会“包装”消息以确保在一次 Socket.Receive() 调用中接收到使用 Socket.Send() 发送的单个消息?或者是吗?

到目前为止我的实现:

0 投票
2 回答
3669 浏览

c# - 异步处理转发器事件

我的页面(asp.net)上有一个自定义搜索控件,其中包含一个文本框和一个用于显示结果的转发器。

当用户键入时,转发器会填充一个回调......漂亮而简单的回调。

...

When a search result is selected the repeater fires off a postback and the itemcommand event is raised (as expected) ... and this event adds a child repeater to itself and binds a child list to the current item.

我的问题是我不希望我的父转发器触发完整的回发,因为页面渲染非常耗时。我尝试将控件/只是外部中继器放入 ajax 更新面板控件,但它似乎仍然触发了一个 ful 回发。

谁能阐明我如何告诉转发器在回调而不是回发中触发其项目命令事件?

我猜这涉及到我的中继器项目控件的大量手动接线,但我希望在某处有一个控件可以为我处理所有这些:)

编辑:我的情况示例....

所以我的问题是...

我如何告诉中继器“在点击时触发此链接按钮作为回调而不是回发”

在更新面板中包装中继器的过程没有帮助,因为链接按钮的 ID 是动态的,因此我不能(无论如何都不是内联)为链接按钮添加触发器。

如果我在中继器 onitembound 事件中手动向面板添加触发器,我会从.Net 中得到一个异常,说回调引用无效......我想这是因为我试图将回调触发器附加到已经处理的控件回发事件或转发器设置的东西......

编辑 2:这里面临的场景示例

本质上是因为此控件在页面上出现 X 次,几乎所有内容都必须是动态的。该控件实现了 ICallbackHandler,并且当用户输入公司名称时,搜索 bx 代码(未包含在下面)会触发 ajax 调用 onkeyup(因此它的工作方式有点像 google)。

我希望当用户从列表中单击公司名称时,它会通过 ajax 回调/部分回发来恢复分支的子列表,从而防止完整回发时出现整页闪烁。

然后,用户将选择一个分支,它会执行完整的回发,这将导致发生多个服务器操作。

这工作正常......它只是不是最干净的用户体验。

0 投票
1 回答
6149 浏览

c# - C# 如何将不仅仅是 IAsyncResult 传递给 AsyncCallback?

除了将 IAsyncResult 传递给 AsyncCallback 之外,如何传递?

示例代码:

我想传入示例变量bool iWantInToo。我不知道如何将其添加到new AsyncCallback(iEndGetResponse).

0 投票
1 回答
1870 浏览

.net - 什么时候应该使用 UdpClient.BeginReceive?我什么时候应该在后台线程上使用 UdpClient.Receive?

本质上,这些之间的区别是什么?我什么时候应该使用哪种形式?

相对

0 投票
1 回答
1216 浏览

gwt - GWT 在 RootPanel 上显示具有异步调用的小部件

我在将小部件添加到另一个容器类的 RootPanel 时遇到问题。我认为这可能与我在创建小部件期间进行的异步调用有关。我有一个名为ImageView的主类,它实现了 EntryPoint。在这个类中,我通过单击一个按钮来创建一个名为NewWidget的小部件实例。但是,我无法使用传统方法显示它:

这是EntryPoint类(ImageView):

这是我的小部件(NewWidget):

在这个NewWidget中,我正在对我的服务器进行异步调用以接收一个字符串 ArrayList,其中包含 10 个字符串,这些字符串引用了 10 个不同图像的文件路径(即“images/01.jpg”、“images/02 .jpg”等)。我很确定我成功且正确地接收了这些图像路径。我任意选择了索引号 4 来显示在我的NewWidget中。

问题是我无法在ImageView主面板中显示此NewWidget 。我可以使用此方法轻松显示其他小部件。经过多次尝试,我意识到如果在NewWidget的末尾添加该行,我可以显示图像。但是,我不想进行引用父容器(ImageView中的 RootPanel )的调用。为什么我不能只在我的容器面板中实例化它来显示这个图像,就像我可以显示任何其他小部件一样?我很确定这与我尝试添加小部件之前未完成的异步调用有关。但我不知道如何解决这个问题。RootPanel.get().add(mainPanel)

如果人们愿意分享他们的想法,我将非常高兴。谢谢。

0 投票
1 回答
1143 浏览

c# - 回调函数:将回调从 C# winform 应用程序传递到引用的 VC++ Exe

异步回调函数

观点:我正在将几个 VB6 ActiveX 应用程序升级到 C#.net,它们都使用回调函数相互通信,它们向引用的 VC++.net 可执行文件注册。

我无法在 C# 中复制以下 VB6 功能: VB6 将包含方法的实例化类作为回调函数参数传递给 VC++ 的能力,然后 VC++ 将其注册为异步通信的回调函数。

除了这个问题之外,升级进行得非常好: 回调函数 ……我现在已经坚持了两个星期。请帮我!!!

我已经弄清楚如何将回调函数作为委托传递,我已经设法使用 C# DynamicInvoke,但是我真的需要它才能在 VC++ 中工作。

我从VC++语句中不断收到的错误消息是"Invalid Number of Parameters" invoke


下面我概述了处理异步回调的 VB6 和 VC++ 功能。每个 VB6 ActiveX 组件都将一个包含单个方法的类作为回调函数传递给 VC++ 可执行文件,VC++ 可执行文件将回调保存在一个数组中供以后使用。由于这是现有代码,因此可以按预期工作。

以下是被实例化并用作回调的VB6类: 请注意:Class1
Attribute Notify.VB_UserMemId = 0

上面的代码已被简化以避免混淆。

下面是实例化 VC++ 可执行文件 () 的VB6代码,VCCallbackHandler并将实例化的对象Class1作为回调参数传递给它

VC++ 代码注册回调(见下文),然后(异步)VC++ 可以利用回调,如果由其他事件提示(见下文'BroadCast')。在这种情况下,VC++ exe 充当多个同时运行的应用程序的中央回调处理程序。每个应用程序都向 VC++ 回调处理程序注册了它们的回调,并且当一个应用程序通过调用另一个事件来提示 VC++ 回调处理程序时,将调用所有回调。通过这种方式,回调处理程序允许所有这些其他应用程序相互通信。

下面是相关的VC++.Net回调代码。

注册回调:

调用回调:

笔记。 以上工作。

有两种可能的解决方案:

  1. C#:如何让 C# 将方法作为参数传递。我想出了如何使用委托来做到这一点,但是 VC++ 想要一个方法而不是委托。
  2. VC++:如何让 VC++ 处理委托而不是方法作为要调用的回调。

我对以下任何c#代码片段都没有成功:`

  • Marshal.GetFunctionPointerForDelegate
  • GCHandle
  • KeepAlive

我希望那里有人遇到过这个问题,并且可以去...... SNAP......它很容易......使用这个......交叉手指。

0 投票
6 回答
7093 浏览

c# - 如何触发异步任务,但在返回 ActionResult 之前等待所有回调?

我有一个接受HttpFileCollectionBaseHTTP POST 的 ASP.NET MVC 3 操作方法。

在这种方法中,我需要调整图像大小并上传 3 次。

action 方法目前看起来像这样:

基本上这是一个用户个人资料页面,他们在其中更改个人资料图片。上传通过 jQuery AJAX 进行。

现在,我怎样才能将三个调用作为异步任务触发ResizeAndUpload,但在所有三个任务都完成之前不返回操作结果?

以前我一直使用Task.Factory.StartNew触发异步任务,但那是我不在乎等待结果的时候。

有任何想法吗?

0 投票
1 回答
314 浏览

c# - 如何在回调中获取传递给异步方法的参数

我需要一个在 CallbackMethodSendRegistration 中传输到 AsyncSendRegistrationMethod 的标签。