问题标签 [callback]
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.
javascript - 根据它们的构造方式,回调也可以定义为闭包吗?
在 JavaScript 中,我知道闭包可以定义为嵌套函数,该函数可以访问其包含函数的变量。例如:
onreadystatechange
现在,下面的代码正在为请求对象的属性建立一个回调;但是,我想知道根据定义,这是否也被认为是一个闭包:
我意识到该handleResponse
函数也可以在 的上下文中编写为匿名函数submitHandler
,但我发现如果在函数回调范围之外定义回调,更复杂的 Ajax 代码可以更易读和更容易维护。同样,这是一个人为的例子,我正在使用它来简单地展示我的问题的重点。
visual-studio-2005 - Visual Studio 2005 中的函数指针不正确,代码从 1 字节偏移开始
有问题的代码挂接到 explorer.exe,但在进入回调函数时崩溃:
调用栈:
Visual Studio 2005 给出了以下反汇编:
而0x548B0CC4周围的内存都是?????? 所以它不是映射内存,因此崩溃。
myCallWndProcRetCallback 开头的机器代码是这样的:
但 Visual Studio 有时也会为此函数提供以下反汇编:
这看起来像是正确的反汇编,但它比上面的反汇编晚 1 个字节!您可以看到从 0x60055B58 开始的指令是相同的。
因此,看起来链接器说函数位于 0x60055B50,但代码实际上从 0x60055B51 开始。我已经确认前者是设置到 Windows 挂钩中的回调。因此,当 Windows 回调函数时,它会执行错误的代码。
我的问题是链接器怎么会出错?我进行了重建,问题消失了,这似乎是随机的。当时 /FORCE:MULTIPLE 链接器选项有效,但如果没有它,则不会报告此回调的链接错误。
后期添加:这可能与 DLL 的重定位或变基有关吗?如果重定位偏移了 1 个字节,这可能会导致问题吗?
c - 将 VB 回调函数传递给 C dll - noob 被卡住
VB 中的回调(来自 C dll)。
我需要将 vb 函数作为回调传递给 dll 中的 ac 函数。我知道我需要为该功能使用 addressof ,但我对如何做到这一点越来越感到困惑。
细节:
我将回调地址传递给的 dll 中的函数在 C 中定义为:
其中函数是参数 7,*streamCallback。PaStreamCallback 类型是这样定义的:
在我的 vb 项目中,我有:
(如果我输错了其他一些参数,请不要担心,我稍后会找到它们!现在让我们专注于回调。)
在 module1.vb 我定义了回调函数:
Function MyCallback( ByVal inp As Byte, _ ByVal outp As Byte, _ ByVal framecount As Long, _ ByVal pastreamcallbacktimeinfo As Byte, _ ByVal pastreamcallbackflags As Byte, _ ByVal userdata As Byte) As Integer ' 在这里做聪明的事情 End Function
dll中的外部函数被调用
这在外部函数的声明中被破坏了——它不喜欢 IntPtr 类型作为 AddressOf 的函数指针。
谁能告诉我如何实现传递这个回调函数?
非常感谢大卫
javascript - 更好地理解 JavaScript 中的回调函数
我理解将一个函数作为回调传递给另一个函数并让它执行,但我不了解执行此操作的最佳实现。我正在寻找一个非常基本的示例,如下所示:
在 myFirstFunction 中,如果我确实返回了新的回调(),那么它会工作并执行匿名函数,但这对我来说似乎不是正确的方法。
javascript - 如何将多个参数传递给 javascript 回调函数?
Javascript代码:
问题是如果我将函数 doSomething 更改为
我必须将相应的行(标记为//*.*
)更改SomeClass
为
(*.*)
无论“doSomething”函数的参数数量如何更改,如何避免更改行?
非常感谢!
asp.net - 使用什么:Asp.net 应用程序中的回调、AjAX 或简单的 Javascript
至于什么是这项工作的最佳工具,我有点不知所措:
我需要什么:父页面有一个链接,当点击一个pop-up
会弹出一个gridview
和一个save
按钮。
如果用户保存了gridview
,父页面应该刷新和更改,换句话说,我需要能够在客户端和服务器之间传递数据。也许,我应该提到该Save
按钮将保存gridview
数据库中的数据,我希望关闭弹出窗口并刷新父页面。
我正在使用 ASP.NET 2.0,目前没有安装 AJAX 库。我在 ASP.NET 中查看CallBack
并倾向于使用它,因为在这种情况下它似乎是最简单的。
编辑:也许我还应该提到我希望父页面在子窗口启动时处于非活动状态......
你会推荐使用什么?谢谢!
asp.net - 回调和 asp.net gridview
我有以下情况。我有一个gridview,我需要向它动态添加行。一切正常,花花公子。然而,最近,我对让这个过程更快、更有用感到好奇。我在 asp.net 2.0 中发现了一个回调功能。
对于使用 gridview 来显示某些内容的情况,这似乎是有意义的。但是,以编程方式添加一行需要向 DataTable 添加一行(即绑定到的 gridview)。由于 DataTable 驻留在服务器上,据我了解,在这里使用 Callback 没有意义......
这是一个很好的教程,概述了主要内容。
在第 5 步中:
“要完成异步加载,我们必须实现由我们在步骤 3 中实现的 ICallbackEventHandler 接口定义的两种方法。其中一种方法将 DataTable 绑定到 GridView 并呈现控件。”
据我所知,没有办法在没有回发的情况下向gridview动态添加行......有什么想法吗?
ruby - 真正的 sinatra(ruby/rack) after_filter 的最快方法是什么?
好的,这是一个简单的任务。在将 html 呈现给客户端后,我想使用请求中的信息执行 db 调用。
我正在使用 sinatra,因为它是一个轻量级的微框架,但如果它更快/更容易(机架?),我真的很喜欢 ruby 中的任何东西。我只想获取 url 并根据 url 将客户端重定向到其他地方。
那么,如何使用 rack/sinatra 作为一个真正的 after_filter。而 after_filter 我的意思是在响应发送到客户端之后。还是没有线程就无法实现?
我分叉了 sinatra 并添加了过滤器,但是没有办法刷新响应,即使是假设流文件(显然是二进制文件)的 send_data 也会等待 after_filters。
我见过这个问题:Multipart-response-in-ruby,但答案是针对rails的。而且我不确定它是否真的刷新了对客户端的响应,然后允许之后进行处理。
Rack::Callbacks 在回调之前和之后都有一些回调,但即使是那些看起来它们会在响应发送到客户端之前运行这里的Rack::Callbacks实现(添加评论):
所以我知道我可以用 rake 通过 shell 调用后台任务。但是最好不要太...还有NeverBlock但这对于执行单独的进程而不延迟响应是否有好处,或者它仍然会使应用程序整体等待(我认为它会)?
我知道这很多,但简而言之,它是在 ruby/sinatra/rack 中发送响应之后真正运行的简单 after_filter。
感谢您阅读或回答我的问题!:-)
c++ - 来自绑定方法的原始函数指针
我需要将一个方法绑定到一个函数回调中,除了这个片段不合法,如demote-boostfunction-to-a-plain-function-pointer中讨论的那样。
获得这种行为的最简单方法是什么?
c - C 中的“CALLBACK”声明有什么作用?
我正在查看SDL库中的一些代码,并遇到了一个声明如下的函数:
现在,我是一名 Delphi 编码员。没有 hablo C muy bien,先生。但我记得我大学课程的语法足够多,可以这样阅读:
函数名称是 WndProc。参数列表是不言自明的。函数返回类型是 LRESULT。但是那个“CALLBACK”到底在做什么呢?在 Delphi 中,任何函数都可以用作回调;您只需要传递正确类型的函数指针。有什么特别的原因导致 C 不能这样工作吗?或者它是否意味着不同的东西?