не удалось найти блокировку в reqwest в шаблоне rust-webpack

Я работаю над мини-проектом rust-webassembly, в котором мне нужно вызвать третий api. Я использую этот шаблон https://github.com/rustwasm/rust-webpack-template/tree/master/template для моего примера.

Я использую reqwest для выполнения http-запроса .

[dependencies]
reqwest = { version = "0.10", features = ["blocking"] }
json = "*

Я столкнулся с проблемой при выполнении кода ниже.

fn get_response() -> JsonValue {let resp = 
reqwest::blocking::get("https://httpbin.org/ip")
.unwrap()
.text().unwrap();json::parse(&resp).unwrap()}

Этот код работает нормально, когда я выполняю сборку груза. Но когда я выполняю npm run build, я получаю ошибку компиляции.

введите здесь описание изображения

Похоже, что npm run build внутренне поражает сборку груза в соответствии с https://github.com/rustwasm/rust-webpack-template/tree/master/template.

Может ли кто-нибудь помочь мне, что мне не хватает?

Я не хочу использовать асинхронный режим в моем случае. пожалуйста, дайте мне знать, есть ли другая библиотека для того же самого.


person Ayush Mishra    schedule 15.06.2020    source источник
comment
Поскольку браузеры не выполняют синхронный ввод-вывод, вполне может быть, что и rustwasm этого не делает. Вы, вероятно, получите лучшую информацию, если спросите проект напрямую.   -  person Masklinn    schedule 15.06.2020


Ответы (1)


Получив ответ, что есть blocking реализация в webassembly. Я реорганизовал свой код.

async fn get_response() -> JsonValue {
let resp = reqwest::get("https://httpbin.org/ip").await.unwrap()
.text().await.unwrap();
json::parse(&resp).unwrap()
}
#[wasm_bindgen(start)]
pub fn main_js() -> Result<(), JsValue> {
//-- Code snippet
let on_click = EventListener::new(&submit_box, "click", move |_event| {
let parsed: JsonValue = get_response().await;
//alert(&input_box.get_attribute("value").unwrap());
});
on_click.forget();
Ok(())
}

Теперь я получаю эту ошибку компиляции.

введите описание изображения здесь

пожалуйста, дайте мне знать, что мне здесь не хватает.

person Ayush Mishra    schedule 15.06.2020
comment
Это именно то, что вам сообщает компилятор .... вы не можете использовать await в move, это должно быть async move - person elasticrash; 15.06.2020