首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emscripten提取始终返回0

Emscripten提取始终返回0
EN

Stack Overflow用户
提问于 2019-03-22 07:44:46
回答 1查看 795关注 0票数 2

我遵循与Emscripten一起提供的同步获取示例,如下所示;

代码语言:javascript
复制
void main()
{
      emscripten_fetch_attr_t attr;
      emscripten_fetch_attr_init(&attr);
      strcpy(attr.requestMethod, "GET");
      attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_SYNCHRONOUS;
      emscripten_fetch_t *fetch = emscripten_fetch(&attr, "https://ichef.bbci.co.uk/news/660/cpsprodpb/E9DF/production/_96317895_gettyimages-164067218.jpg");
      printf("Fetch finished with status %d\n", fetch->status);
}

它总是从提取状态返回0。

我用

代码语言:javascript
复制
FLAGS            += -std=c++17 -stdlib=libc++ -O3
FLAGS            += -s WASM=1  -s USE_WEBGL2=1 -s FULL_ES3=1 
FLAGS            += -s ALLOW_MEMORY_GROWTH=1 
FLAGS            += -o hello.html 
FLAGS            += -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap']"    
FLAGS            += --no-heap-copy
FLAGS            +=  -s FETCH=1

但是,当我使用异步测试并读取OnSuccess函数中的数据时。数据打印正确

代码语言:javascript
复制
static
void ondownload_success(emscripten_fetch_t *fetch)
{
    printf("[ download ][ OK ]    %llu bytes  [ URL ]: %s\n", fetch->numBytes, fetch->url);

    printf("%c %c %c", fetch->data[0], fetch->data[3], fetch->data[2] );
    emscripten_fetch_close(fetch); // Free data associated with the fetch.
}

我的提取同步代码有什么问题?所有内容都与"example_synchronous_fetch.cpp“示例完全相同。

我在Windows10上跑。Emscripten 1.38.29使用Microsoft无需服务器直接浏览文件(双击hello.html )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 10:56:52

同步fetch有一些额外的限制,而且您的构建标志似乎不启用同步fetch

同步Emscripten提取操作受到许多限制,具体取决于使用哪种Emscripten构建模式(链接器标志): 没有标志:只有异步获取操作可用。 代理到工作者:只执行XHR但不与IndexedDB交互的取取操作是允许的。 -s USE_PTHREADS=1:同步抓取操作在线程上可用,但在主线程上没有。 -代理到工作人员+ -s USE_PTHREADS=1:同步获取操作在主线程和p线程上都可用.

reference/fetch.html#synchronous-fetches

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55294980

复制
相关文章

相似问题

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