为什么我们应该将listenHTTP中的指针传递给& handleRequest?

时间:2016-03-12 15:06:38

标签: d vibed

我正在阅读振动的例子,下一刻无法理解:

import vibe.d;

shared static this()
{
    auto settings = new HTTPServerSettings;
    settings.port = 8080;

    listenHTTP(settings, &handleRequest);
}

void handleRequest(HTTPServerRequest req,
                   HTTPServerResponse res)
{
    if (req.path == "/")
        res.writeBody("Hello, World!", "text/plain");
}

为什么我们将listenHTTP指针传递给&handleRequest。我的意思是为什么我们不能简单地为每个请求调用它?

那么HTTPServerRequest reqHTTPServerResponse res呢?他们是在handleRequest来电或何时开始创作的?

1 个答案:

答案 0 :(得分:3)

指针是库如何知道您希望它在每次请求时调用的函数。

您将指针传递给函数,然后vibe在该点创建req和res,并在每次获得新请求时调用指向的函数。

如果你试图在没有指针的情况下传递handleRequest,它会在请求实际准备好之前尝试在设置时调用它。