我正在做一个项目,我们需要从一个端点消费一个脚本。是的,我们将要消费的API是为web构建的。所以,事情是端点返回一个脚本,这是一个设置变量的自调用函数。请求内容类型头是application/javascript,我想从端点获得结果,并在应用程序中使用该变量。
我将给予一个更直接的例子。
假设我们有以下脚本:
const Script = (() => {
return {
some: "method",
another: "method",
};
})();
该脚本从端点返回,将在Web浏览器中使用,如下所示。
<script src="https://example.com/index.js"></script>
但我希望在我的React Native应用程序中使用该脚本/变量,如下所示。
fetch("https://example.com/index.js", { method: "GET" }).then((response) => {});
问题是,对请求的响应不是我需要的,我可以将其转换为Blob,但如何将Blob解析为js函数或类似的东西呢?
1条答案
按热度按时间2eafrhcq1#
解决方案是通过使用Function完成的,Function在内部使用eval
由于返回的脚本是一个
Blob
,即存储在请求结果中(在我的例子中,它在_bodyBlob
内部,但我认为它可能会因后端而异),我可以将Blob
转换为字符串,有一些方法可以做到这一点。我的方法是使用我的Blob
创建一个Response
示例,然后在其中使用text
方法。加载字符串后,脚本本身就是一个自调用函数,它设置了一个变量,因此我需要编辑字符串来创建一个函数,该函数返回所定义的变量。
在此之后,我只需要创建一个函数并执行它来将所需的对象返回到变量中。