首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WASM-Bindgen和Rust中实际获取响应体的文本

如何在WASM-Bindgen和Rust中实际获取响应体的文本
EN

Stack Overflow用户
提问于 2020-01-17 00:37:48
回答 1查看 1.6K关注 0票数 4

也许这是一个简单的问题,但我还没有找到任何地方的答案。我已经搜索了文档,但是我在整个互联网上找到的web-sys获取的唯一例子仍然没有解决这个问题(官方文档,同样也没有)。

如何从web请求中获得响应体?它有着JsFutures和展开的所有开销,我似乎无法找到正确的方法来将数据放入字符串。我只是试图从(localhost dev)服务器中检索一个文件,然后将其解析为WebGL程序的顶点着色器,但我甚至无法获得它的字符串或以任何方式读取它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 10:44:35

body类型上有一个Response方法(参见https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Response.html#method.body )

还有一个text方法,它返回将解析为JsValuePromise

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

你应该能做这样的事:

代码语言:javascript
复制
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();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59779747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档