0

我有一个 .net 类,它向正在运行的控制器发出 HTTP 请求,但我的控制器必须让请求等待,一段时间后我必须对请求做出响应。我尝试使用 Promise 但无法弄清楚如何实现这一点需要帮助来解决这个问题......

提前致谢

4

2 回答 2

1

假设您想在 Play 1.2.x 中执行此操作,您将使用该await函数。例如,要接收请求,等待 30 秒,然后响应,您会这样做

public static void delay30() {
    await("30s");
    renderText("a-response");
}

您可以使用任何渲染方法,renderText 只是一个示例。

于 2012-04-20T13:28:51.073 回答
1

等待通常不是最好的主意。在这种情况下,您可能想要做的是创建一个 Akka actor,它会每隔一段时间被调度程序ping通。当它收到该 ping 消息时,它会检查您正在寻找的条件是否存在,并会通知所有注册对该事件感兴趣的 actor-refs。

当您通过 ask 模式向 akka Actor 发送消息时,该消息的发送者是支持 Future 的 Actor,一旦向该支持 Actor 发送消息,就会实现。

Play 2.0 有一种将 Akka Future 转变为 Play Promise的简单方法。有了它,使用 Akka 和 Play 进行异步编程!

所以总而言之,你的 Actor 需要对两条消息做出反应:RegisterListener Ping

RegisterListener 是您使用 ask 模式发送的消息,actor 将需要保留对该侦听器的发送者的引用,以便在满足条件时通知它。

于 2012-04-26T09:16:41.287 回答