Skip to content

Help with promises (await) #648

@pjebs

Description

@pjebs

@dop251
I have this JS script

function doSomething() {
  return new Promise((resolve) => {
     resolve("https://example.com/");
  });
}

globalThis.testpromise = async () => JSON.stringify(await doSomething());
globalThis.testpromise2 = () => doSomething();

I am trying to get the final string value out of JS world and into Go world. (Note: In my actual real-world project, doSomething() won't resolve immediately)

This works (returns https://example.com/):

	v, err := vm.RunString(`testpromise2()`)
	v.Export().(*goja.Promise).Result().Export().(string) // Returns https://example.com/
}

However this does not (returns an unresolved promise, that never resolves):

	v, err := vm.RunString(`testpromise()`)
	v.Export().(*goja.Promise).Result().Export().(string)
}

NOTE: v, err := vm.RunString("await testpromise()") produces a JS error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions