下面是一个使用 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助手提供,问题来源于学员提问




