ZBLOG

C++ 调用 val::global("fetch") 请求数据实例

下面是一个使用 C++ 调用 fetch 进行网络请求的示例代码:

#include <emscripten/bind.h>
#include <iostream>

void fetchData(const std::string& url) {
    emscripten::val fetch = emscripten::val::global("fetch");
    
    // 发起网络请求
    fetch(emscripten::val(url))
        .then([](emscripten::val response) {
            return response.call<emscripten::val>("json");
        })
        .then([](emscripten::val data) {
            std::cout << "成功获取数据:" << emscripten::val(data).as<std::string>() << std::endl;
        })
        .catchError([](const emscripten::val& error) {
            std::cerr << "请求失败:" << error.as<std::string>() << std::endl;
        });
}

EMSCRIPTEN_BINDINGS(fetch_example) {
    emscripten::function("fetchData", &fetchData);
}

在这个示例中,我们通过 emscripten/bind.h 头文件包含了 Emscripten 的绑定功能,并定义了一个名为 fetchData 的函数。

fetchData 函数中,我们首先使用 emscripten::val 的全局静态成员函数 global() 来获取全局对象 window.fetch 的引用。然后,我们将要请求的 URL 作为参数传递给该函数。

接下来,我们链式调用 .then() 方法来处理响应数据。在这个示例中,我们将响应的 JSON 数据解析为字符串,并打印到标准输出。

如果发生错误,我们使用 .catchError() 方法来捕获并打印错误信息。

最后,我们使用 EMSCRIPTEN_BINDINGS 宏将 fetchData 函数绑定到 Emscripten 中以供 JavaScript 调用。

请确保在编译时启用了 Emscripten 的相关选项,并正确链接到所需的库。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17076

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?