1

我正在阅读充满活力的示例,下一刻无法理解:

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呼叫的时刻还是在何时创建?

4

1 回答 1

3

指针是库如何知道您希望它在每个请求上调用什么函数的方式。

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

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

于 2016-03-12T15:13:14.367 回答