如何在 Golang 中使用 Fetch in JavaScript (V8go, Otto)?

我正在尝试在 Golang 函数内运行 JavaScript,并使用 fetch 在 Javascript 上下文中通过 API 获取 JSON。


我使用以下代码在Otto中进行了尝试:


import "github.com/robertkrimen/otto"

    vm := otto.New()

    vm.Run(`

    function tryfunc() {

        console.log("Started");

        fetch('https://www.example.com/APIendpoint');

        console.log("Success");

    }

    tryfunc();

    `)

Otto 使用起来非常简单,但看起来 Otto 是一个事件总线并且不管理 fetch。


我现在正在尝试使用以下代码使用v8go :


import v8 "rogchap.com/v8go"

ctx := v8.NewContext()

ctx.RunScript(`fetch("https://www.example.com/APIendpoint"), ""`)

但它需要另一个论点。文档非常不清楚,即使是最简单的 JS 脚本也很难理解如何运行。


有人可以帮忙吗?


慕标5832272
浏览 401回答 1
1回答

ibeautiful

Otto 和 v8 实现ECMAScript,从当前的 13.0 版本开始不需要内置函数fetch(请参阅:https ://262.ecma-international.org/13.0/#sec-function-properties-of-the-global-object ) ,此功能由网络浏览器实现。我相信第二个参数只是调试输出前缀的文件名(例如:foo.js:14: undefined bar),这在解释器中很常见。我怀疑你的脚本确实运行了,如果你打印出RunScript的输出(你忽略了两个返回值,一个 JavaScript 值和一个错误),那应该有一个“未定义的函数获取”和 value nil。fetch仅供参考,在v8go 文档中有一个实施示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go