簡體   English   中英

如何在 WASM-Bindgen 和 Rust 中實際獲取響應正文的文本

[英]How to actually get the text of the response body in WASM-Bindgen and Rust

也許這是一個簡單的問題,但我還沒有在任何地方找到答案。 我已經搜索了文檔,但我在整個互聯網上找到的 web-sys fetch 的單個示例仍然沒有解決這個問題(官方文檔,不少)。

您如何從 web-sys 請求中獲取響應正文? 它具有 JsFutures 和解包的所有開銷,我實際上似乎無法找到正確的方法來將我的數據放入字符串中。 我只是想從(本地主機開發)服務器檢索一個文件,然后將其解析為 WebGL 程序的頂點着色器,但我什至無法獲取它的字符串或以任何方式讀取它。

Response類型有一個body方法,參見https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Response.html#method.body

還有一個text返回一個方法Promise ,將解決成JsValue

https://rustwasm.github.io/wasm-bindgen/examples/fetch.html為例

你應該能夠做這樣的事情:

let mut opts = RequestInit::new();
opts.method("GET");
opts.mode(RequestMode::Cors);

let request = Request::new_with_str_and_init(
    "https://api.github.com/repos/rustwasm/wasm-bindgen/branches/master",
    &opts,
)?;

request
    .headers()
    .set("Accept", "application/vnd.github.v3+json")?;

let window = web_sys::window().unwrap();
let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?;

// `resp_value` is a `Response` object.
assert!(resp_value.is_instance_of::<Response>());
let resp: Response = resp_value.dyn_into().unwrap();

// Convert this other `Promise` into a rust `Future`.
let text = JsFuture::from(resp.text()?).await?.as_string().unwrap();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM