rust tokio中Future的使用疑惑
使用tokio时把hyper client发送get请求,为什么第一种方法可以直接返回,第二种方法却一直阻塞!
方法一:
//main方法
tokio::run(lazy(|| {
let url = String::from("http://www.baidu.com").parse::<hyper::Uri>().unwrap();
let client = Client::new().get(url).map_err(|_| ProcessError::GetRequestError).and_then(|res| {
println!("{}",res.status());
return future::ok(());
}).map_err(|_| ());
return client;
}));
第二种方法
impl Future for DocumentBuilder {
type Item = RcDom;
type Error = ProcessError;
fn poll(&mut self) -> Poll<Self::Item,Self::Error> {
let response = self.client.get(self.uri.clone());
let body = response.wait();
if body.is_ok() {
println!("is ok!");
} else {
println!("err");
}
panic!("..");
}
}
tokio::run(lazy(|| {
let document = DocumentBuilder::new("https://www.baidu.com").unwrap().map_err(|err| {
println!("{:?}",err);
}).map(|_| {
println!("..");
});
return document;
}));
第二种方法为什么不能panic,而是一直wait
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)