Spec-Zone.ru › Go

Пакет js

  • import "syscall/js"
  • Обзор
  • Указатель
  • Примеры

Обзор

Пакет js предоставляет доступ к среде хоста WebAssembly при использовании архитектуры js/wasm. Его API основан на семантике JavaScript.

Этот пакет является ЭКСПЕРИМЕНТАЛЬНЫМ. Сейчас он предназначен только для запуска тестов и пока не предоставляет пользователям полноценный API. На него не распространяется обещание совместимости Go.

Указатель

  • func CopyBytesToGo(dst []byte, src Value) int
  • func CopyBytesToJS(dst Value, src []byte) int
  • type Error
  • func (e Error) Error() string
  • type Func
  • func FuncOf(fn func(this Value, args []Value) any) Func
  • func (c Func) Release()
  • type Type
  • func (t Type) String() string
  • type Value
  • func Global() Value
  • func Null() Value
  • func Undefined() Value
  • func ValueOf(x any) Value
  • func (v Value) Bool() bool
  • func (v Value) Call(m string, args ...any) Value
  • func (v Value) Delete(p string)
  • func (v Value) Equal(w Value) bool
  • func (v Value) Float() float64
  • func (v Value) Get(p string) Value
  • func (v Value) Index(i int) Value
  • func (v Value) InstanceOf(t Value) bool
  • func (v Value) Int() int
  • func (v Value) Invoke(args ...any) Value
  • func (v Value) IsNaN() bool
  • func (v Value) IsNull() bool
  • func (v Value) IsUndefined() bool
  • func (v Value) Length() int
  • func (v Value) New(args ...any) Value
  • func (v Value) Set(p string, x any)
  • func (v Value) SetIndex(i int, x any)
  • func (v Value) String() string
  • func (v Value) Truthy() bool
  • func (v Value) Type() Type
  • type ValueError
  • func (e *ValueError) Error() string

Примеры

FuncOf

Файлы пакета

func.go js.go

func CopyBytesToGo

func CopyBytesToGo(dst []byte, src Value) int

CopyBytesToGo копирует байты из src в dst. Вызывает панику, если src не является Uint8Array или Uint8ClampedArray. Возвращает количество скопированных байтов, равное меньшей из длин src и dst.

func CopyBytesToJS

func CopyBytesToJS(dst Value, src []byte) int

CopyBytesToJS копирует байты из src в dst. Вызывает панику, если dst не является Uint8Array или Uint8ClampedArray. Возвращает количество скопированных байтов, равное меньшей из длин src и dst.

type Error

Error оборачивает ошибку JavaScript.

type Error struct {
    // Value is the underlying JavaScript error value.
    Value
}

func (Error) Error

func (e Error) Error() string

Error реализует интерфейс error.

type Func

Func — это обёрнутая функция Go, которую может вызывать JavaScript.

type Func struct {
    Value // the JavaScript function that invokes the Go function
    // contains filtered or unexported fields
}

func FuncOf

func FuncOf(fn func(this Value, args []Value) any) Func

FuncOf возвращает функцию для использования в JavaScript.

Функция Go fn вызывается со значением ключевого слова JavaScript "this" и аргументами вызова. Возвращаемое значение вызова — это результат функции Go, преобразованный обратно в JavaScript согласно правилам ValueOf.

При вызове обёрнутой функции Go из JavaScript цикл обработки событий приостанавливается и запускается новая горутина. Другие обёрнутые функции, вызванные во время вызова из Go в JavaScript, выполняются в той же горутине.

В результате, если одна из обёрнутых функций блокируется, цикл обработки событий JavaScript блокируется до её возврата. Поэтому вызов любого асинхронного API JavaScript, которому требуется цикл обработки событий, например fetch (http.Client), приводит к немедленной взаимной блокировке. Следовательно, блокирующая функция должна явно запускать новую горутину.

Чтобы освободить ресурсы, Func.Release необходимо вызвать, когда функция больше не будет вызываться.

Пример

Код:

var cb js.Func
cb = js.FuncOf(func(this js.Value, args []js.Value) any {
    fmt.Println("button clicked")
    cb.Release() // release the function if the button will not be clicked again
    return nil
})
js.Global().Get("document").Call("getElementById", "myButton").Call("addEventListener", "click", cb)

func (Func) Release

func (c Func) Release()

Release освобождает ресурсы, выделенные для функции. После вызова Release функцию нельзя вызывать. Release можно вызвать, даже если функция ещё выполняется.

type Type

Type представляет тип JavaScript-значения Value.

type Type int
const (
    TypeUndefined Type = iota
    TypeNull
    TypeBoolean
    TypeNumber
    TypeString
    TypeSymbol
    TypeObject
    TypeFunction
)

func (Type) String

func (t Type) String() string

type Value

Value представляет значение JavaScript. Нулевое значение — это значение JavaScript "undefined". Значения можно сравнивать на равенство с помощью метода Equal.

type Value struct {
    // contains filtered or unexported fields
}

func Global

func Global() Value

Global возвращает глобальный объект JavaScript, обычно "window" или "global".

func Null

func Null() Value

Null возвращает значение JavaScript "null".

func Undefined

func Undefined() Value

Undefined возвращает значение JavaScript "undefined".

func ValueOf

func ValueOf(x any) Value

ValueOf возвращает x как значение JavaScript:

| Go                     | JavaScript             |
| ---------------------- | ---------------------- |
| js.Value               | [its value]            |
| js.Func                | function               |
| nil                    | null                   |
| bool                   | boolean                |
| integers and floats    | number                 |
| string                 | string                 |
| []interface{}          | new array              |
| map[string]interface{} | new object             |

Вызывает панику, если x не относится к одному из ожидаемых типов.

func (Value) Bool

func (v Value) Bool() bool

Bool возвращает значение v как bool. Вызывает панику, если v не является логическим значением JavaScript.

func (Value) Call

func (v Value) Call(m string, args ...any) Value

Call вызывает метод m значения v в JavaScript с указанными аргументами. Вызывает панику, если у v нет метода m. Аргументы преобразуются в значения JavaScript согласно правилам функции ValueOf.

func (Value) Delete

func (v Value) Delete(p string)

Delete удаляет свойство JavaScript p значения v. Вызывает панику, если v не является объектом JavaScript.

func (Value) Equal

func (v Value) Equal(w Value) bool

Equal сообщает, равны ли v и w согласно оператору JavaScript ===.

func (Value) Float

func (v Value) Float() float64

Float возвращает значение v как float64. Вызывает панику, если v не является числом JavaScript.

func (Value) Get

func (v Value) Get(p string) Value

Get возвращает свойство JavaScript p значения v. Вызывает панику, если v не является объектом JavaScript.

func (Value) Index

func (v Value) Index(i int) Value

Index возвращает элемент JavaScript с индексом i из значения v. Вызывает панику, если v не является объектом JavaScript.

func (Value) InstanceOf

func (v Value) InstanceOf(t Value) bool

InstanceOf сообщает, является ли v экземпляром типа t согласно оператору JavaScript instanceof.

func (Value) Int

func (v Value) Int() int

Int возвращает значение v, усечённое до типа int. Вызывает панику, если v не является числом JavaScript.

func (Value) Invoke

func (v Value) Invoke(args ...any) Value

Invoke вызывает значение v в JavaScript с указанными аргументами. Вызывает панику, если v не является функцией JavaScript. Аргументы преобразуются в значения JavaScript согласно правилам функции ValueOf.

func (Value) IsNaN

func (v Value) IsNaN() bool

IsNaN сообщает, является ли v значением JavaScript "NaN".

func (Value) IsNull

func (v Value) IsNull() bool

IsNull сообщает, является ли v значением JavaScript "null".

func (Value) IsUndefined

func (v Value) IsUndefined() bool

IsUndefined сообщает, является ли v значением JavaScript "undefined".

func (Value) Length

func (v Value) Length() int

Length возвращает свойство JavaScript "length" значения v. Вызывает панику, если v не является объектом JavaScript.

func (Value) New

func (v Value) New(args ...any) Value

New применяет оператор JavaScript "new" к значению v в качестве конструктора с указанными аргументами. Вызывает панику, если v не является функцией JavaScript. Аргументы преобразуются в значения JavaScript согласно правилам функции ValueOf.

func (Value) Set

func (v Value) Set(p string, x any)

Set задаёт свойству JavaScript p значения v значение ValueOf(x). Вызывает панику, если v не является объектом JavaScript.

func (Value) SetIndex

func (v Value) SetIndex(i int, x any)

SetIndex задаёт элементу JavaScript с индексом i значения v значение ValueOf(x). Вызывает панику, если v не является объектом JavaScript.

func (Value) String

func (v Value) String() string

String возвращает значение v в виде строки. String — особый случай из-за соглашения Go о методе String. В отличие от других методов получения значений, он не вызывает панику, если тип v не равен TypeString. Вместо этого он возвращает строку вида "<T>" или "<T: V>", где T — тип v, а V — строковое представление значения v.

func (Value) Truthy

func (v Value) Truthy() bool

Truthy возвращает результат проверки «истинности» значения v в JavaScript. В JavaScript значения false, 0, "", null, undefined и NaN являются «ложными», а все остальные — «истинными». См. https://developer.mozilla.org/en-US/docs/Glossary/Truthy.

func (Value) Type

func (v Value) Type() Type

Type возвращает тип значения v в JavaScript. Он похож на оператор JavaScript typeof, но для null возвращает TypeNull вместо TypeObject.

type ValueError

Ошибка ValueError возникает при вызове метода Value для значения Value, которое его не поддерживает. Такие случаи описаны в документации каждого метода.

type ValueError struct {
    Method string
    Type   Type
}

func (*ValueError) Error

func (e *ValueError) Error() string

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/syscall/js/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API