stdweb
stdweb copied to clipboard
How to obtain XmlHttpRequest response outside clousure.
let mut resp = String::new();
let xhr = XmlHttpRequest::new();
xhr.open("GET", &api_url)?;
xhr.send()?;
xhr.add_event_listener(|e: ReadyStateChangeEvent| {
let target: XmlHttpRequest = e.target().unwrap().try_into().unwrap();
if target.ready_state() == XhrReadyState::Done {
//resp = xhr.response_text().unwrap().unwrap();
resp = target.response_text().unwrap().unwrap().to_string();
}
});
// do stuff with the respone, but only if the response is not empty
I can't use move on the clousure, otherwhise i get value borrowed after move
as an error.
You can do something like this:
xhr.add_event_listener(move |e: ReadyStateChangeEvent| {
// Magically retrieve the request object through js and std::web
let xhr = Reference::from(e.target().unwrap()).downcast::<XmlHttpRequest>().unwrap();
match xhr.ready_state() {
XhrReadyState::Done => {
...
But you won't be able to retrieve the headers easily until https://github.com/koute/stdweb/pull/381 is merged