在服务器处理程序中,我有以下方法:
private void writeResponse(HttpObject currentObj, ChannelHandlerContext ctx) throws Exception {
Promise<String> promise = client.run(); // client.run() will return a promise
// the promise contains the result string I need for http response.
promise.sync();
// this method sends http response back, promise.getNow() is the content for the response.
writeResponse(currentObj, ctx, promise.getNow());
}
client此方法是在从客户端(在代码中)获取一些数据后发送响应。当我使用浏览器对此进行测试时,我确实得到了响应内容。
但是,当我将其更改为:
private boolean writeResponse(HttpObject currentObj, ChannelHandlerContext ctx) throws Exception {
Promise<String> promise = client.run();
promise.addListener(new FutureListener<String>() {
@Override
public void operationComplete(Future<String> future) throws Exception {
if (future.isSuccess()) {
writeResponse(currentObj, ctx, future.getNow()); // (1)
} else {
writeResponse(currentObj, ctx, "FAILED");
}
}
});
}
它不再起作用了。据我了解,它认为第二个也应该起作用,因为我已经确认代码确实进入了 (1) 块(if (future.isSuccess())块)。但是我在浏览器中没有得到任何响应。谁能解释一下或指出一些参考资料?我在文档中找到了await()和之间的比较,addListener但它让我感觉两者在功能上彼此相似。
弑天下
相关分类