标签: callback

如何在Haskell中编写Windows服务应用程序?

我一直在努力在Haskell中编写Windows服务应用程序.

背景

服务应用程序由Windows服务控制管理器执行.启动后,它会对StartServiceCtrlDispatcher进行阻塞调用,该调用提供了一个回调函数,用作服务的主函数.

该服务的主要功能是注册第二个回调来处理传入的命令,如启动,停止,继续等.它通过调用RegisterServiceCtrlHandler来完成.

问题

我能够编写一个注册服务主函数的程序.然后,我可以将程序安装为Windows服务,并从服务管理控制台启动它.该服务能够启动,将自身报告为正在运行,然后等待传入的请求.

问题是我无法调用我的服务处理函数.查询服务状态显示它正在运行,但是一旦我发送"停止"命令,窗口会弹出一条消息说:

Windows could not stop the Test service on Local Computer.

Error 1061: The service cannot accept control messages at this time.
Run Code Online (Sandbox Code Playgroud)

根据MSDN文档,StartServiceCtrlDispatcher函数会阻塞,直到所有服务报告它们已停止.在调用服务主函数之后,调度程序线程应该等到服务控制管理器发送命令,此时应该由该线程调用处理函数.

细节

以下是我正在尝试做的非常简化的版本,但它演示了我的处理程序函数未被调用的问题.

首先,一些名称和进口:

module Main where

import Control.Applicative
import Foreign
import System.Win32

wIN32_OWN_PROCESS :: DWORD
wIN32_OWN_PROCESS = 0x00000010

sTART_PENDING, rUNNING :: DWORD
sTART_PENDING = 0x00000002
rUNNING = 0x00000004

aCCEPT_STOP, aCCEPT_NONE :: DWORD
aCCEPT_STOP = 0x00000001
aCCEPT_NONE = 0x00000000

nO_ERROR …
Run Code Online (Sandbox Code Playgroud)

winapi haskell windows-services callback ffi

44
推荐指数
2
解决办法
2922
查看次数

从fs.readFileSync()到fs.readFile()的Node.js

我试图在Node.js中了解同步与异步,特别是读取html文件.

在请求处理程序中,我正在使用的同步版本,其工作原理如下:

var fs = require("fs");
var filename = "./index.html";
var buf = fs.readFileSync(filename, "utf8");

function start(resp) {
    resp.writeHead(200, {"Content-type":"text/html"});
    resp.write(buf);
    resp.end();
    }

exports.start=start; 
Run Code Online (Sandbox Code Playgroud)
  1. 使用readFile()的版本是什么?
  2. 我理解readFile是异步的,所以理论上我应该等待整个文件在渲染之前被读取,所以我应该引入一个addListener吗?我可能会混淆不同的东西.

编辑:我试图像这样重构代码:

var fs = require("fs");
var filename = "./index.html";
function start (resp) {
    resp.writeHead(200, {"Content-Type":"text/html"});
    fs.readFile(filename, "utf8", function (err, data) {
        if (err) throw err;
        resp.write(data);
        });
    resp.end();
    }
Run Code Online (Sandbox Code Playgroud)

我得到一个空白页面,我想这是因为它应该等待所有数据都被读取,在resp.write(数据)之前,我该如何发出信号?

callback fs readfile node.js

43
推荐指数
2
解决办法
15万
查看次数

如何在内部添加延迟承诺

fetch() {   
    return axios.get('/rest/foo')
        //.then(response => {throw new Error(response)}) // Uncomment to test network error
        //.then( <<add delay here>> ) // Uncomment to simulate network delay
}
Run Code Online (Sandbox Code Playgroud)

如何在后者中添加延迟然后阻塞,因此它会在将控制传递给提取调用者然后阻塞之前等待指定的时间量?

javascript asynchronous callback promise

43
推荐指数
2
解决办法
4万
查看次数

在jQuery中提取Ajax返回数据

我已经完成了jQuery和Ajax,但我无法将响应转换为Div元素.这是代码:

的index.html

$.ajax({
    type:"POST",
    url: "ajax.php",
    data:"id="+id ,
    success: function(html){
        $("#response").html(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

它收到了对我的回复<div id="response"></div>.

ajax.php下面的代码回报index.html文件:

<div id ="one"> OneVal </div>
<div id ="sub"> SubVal </div>
Run Code Online (Sandbox Code Playgroud)

我是否能够将OneVal和Subval提取到变量中,如何提取"OneVal"和"SubVal"而不是上面的响应?

ajax jquery callback

42
推荐指数
3
解决办法
18万
查看次数

使用WCF回调需要采取哪些步骤?

我正在努力学习WCF.我有一个简单的客户端和服务器应用程序设置,并在按下客户端上的按钮后,它从服务器获取更新的值.

我的下一步是尝试从服务器到客户端进行回调以更新其值.我已经倾注了许多例子,它们看起来太大而且令人困惑.有没有人可以在C#中提供我最简单的实现示例?

我一直在线查看示例,我只是不明白它需要什么?当然,我可以逐行复制示例,但这对我没有好处,因为如果我想在我自己的代码中执行此操作,我仍然没有实现.

有人可以帮我一个非常简单的例子,说明我需要采取什么步骤以及我需要在服务器代码中做什么,然后在客户端代码中才能实现这一点?

谢谢

.net c# vb.net wcf callback

42
推荐指数
1
解决办法
3万
查看次数

如何在需要回调时更新所有内容?

假设我在一个名为的数组中有15个用户id user_ids.

如果我想,比如说,将他们所有的名字改为"Bob",我可以这样做:

users = User.find(user_ids)
users.update_all( :name => 'Bob' )
Run Code Online (Sandbox Code Playgroud)

但是,这不会触发回调.如果我需要触发对这些记录保存的回调,据我所知,唯一的方法是使用:

users = User.find(user_ids)
users.each do |u|
  u.name = 'Bob'
  u.save
end
Run Code Online (Sandbox Code Playgroud)

但是,这可能意味着在控制器操作中执行非常长时间的任务.

所以,我的问题是,是否还有其他更好/更高性能/更多的方式来触发批量更新到一组记录,这些记录触发记录的回调?

activerecord ruby-on-rails callback ruby-on-rails-3 update-all

42
推荐指数
3
解决办法
2万
查看次数

嵌套回调的Java模式?

我正在寻找一种Java模式来制作嵌套的非阻塞方法调用序列.在我的例子中,一些客户端代码需要异步调用服务来执行某些用例,并且该用例的每个步骤本身必须异步执行(出于此问题范围之外的原因).想象一下,我现有的接口如下:

public interface Request {} 

public interface Response {} 

public interface Callback<R extends Response> {
    void onSuccess(R response);
    void onError(Exception e);
}
Run Code Online (Sandbox Code Playgroud)

RequestResponse接口的各种配对实现,即RequestA+ ResponseA(由客户端给出),RequestB+ ResponseB(由服务内部使用)等.

处理流程如下所示:

显示嵌套回调的序列图.

在接收到每个响应和发送下一个请求之间,需要进行一些额外的处理(例如,基于任何先前请求或响应中的值).

到目前为止,我已经尝试了两种在Java中编码的方法:

  • 匿名类:由于所需的嵌套而很快变得难看
  • 内部类:比上面更整洁,但仍然难以让其他开发人员理解执行流程

是否有一些模式可以使这些代码更具可读性?例如,我可以将服务方法表示为一个自包含操作的列表,这些操作由一些负责嵌套的框架类按顺序执行吗?

java design-patterns asynchronous nested callback

42
推荐指数
2
解决办法
7359
查看次数

如何让Meteor.Call返回模板的值?

我试图理解这个关于这个概念的帖子,但是,我没有得到它.我有以下简单的设置:

/server/test.js
Meteor.methods({ 
  abc: function() {
    var result = {};
    result.foo = "Hello ";
    result.bar = "World!";
    return result;
  }
});

/client/myapp.js
var q = Meteor.call('abc');
console.log(q);
Run Code Online (Sandbox Code Playgroud)

此结构返回到控制台undefined.

如果我将myapp.js文件更改为:

Meteor.call('abc', function(err, data) {
  !err ? console.log(data) : console.log(err);
}
Run Code Online (Sandbox Code Playgroud)

我收到了Object我的控制台.

理想情况下,这是我希望能够做到的,但它不起作用,在控制台中说明: Cannot read property 'greeting' of undefined

/client/myapp.js
var q = Meteor.call('abc');

Template.hello.greeting = function() {
   return q.foo;
}
Run Code Online (Sandbox Code Playgroud)

将数据从服务器对象传递到模板的任何帮助将不胜感激.我还在学习JavaScript和Meteor.

谢谢!

callback meteor

41
推荐指数
1
解决办法
3万
查看次数

Python,如何将参数传递给函数指针参数?

我刚开始学习Python,发现我可以将一个函数作为另一个函数的参数传递.现在如果我调用foo(bar())它将不会作为函数指针传递,而是使用函数的返回值.调用foo(bar)将传递函数,但这样我无法传递任何其他参数.如果我想传递一个调用的函数指针bar(42)怎么办?

我希望能够重复一个函数,无论我传递给它的是什么参数.

def repeat(function, times):
    for calls in range(times):
        function()

def foo(s):
        print s

repeat(foo("test"), 4)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,该函数foo("test")应该连续调用4次.有没有办法实现这一点,而不必通过"测试" repeat代替foo

python function-pointers callback

41
推荐指数
2
解决办法
5万
查看次数

rails回调中after_create,after_save和after_commit之间的区别

之间的差异after_create,after_save以及after_commit在Rails的是:

  • after_save 在创建和更新对象时调用
  • after_commit 在创建,更新和销毁时调用.
  • after_create 仅在创建对象时调用

这是它们之间的唯一区别还是存在其他主要差异?

ruby activerecord ruby-on-rails callback

41
推荐指数
2
解决办法
2万
查看次数