Files
napi-go/internal/napi/promise.go
Matheus Sampaio Queiroga 3668cf5c7a Feat: Add ArrayBuffer, DataView, TypedArray, External support
Implement wrappers and N-API bindings for managing JavaScript
ArrayBuffer, DataView, TypedArray, and External values.

Includes creation, info retrieval, and JS-to-Go conversion support.
Update README checklist for newly supported types.
2025-04-28 13:39:22 -03:00

45 lines
1.7 KiB
Go

package napi
// #include <stdlib.h>
// #include <node/node_api.h>
import "C"
import "unsafe"
type Deferred unsafe.Pointer
// This API creates a deferred object and a JavaScript promise.
func CreatePromise(env Env) (Value, Deferred, Status) {
var value Value
var deferred Deferred
status := Status(C.napi_create_promise(
C.napi_env(env),
(*C.napi_deferred)(unsafe.Pointer(&deferred)),
(*C.napi_value)(unsafe.Pointer(&value)),
))
return value, deferred, status
}
// This API resolves a JavaScript promise by way of the deferred object with which it is associated.
// Thus, it can only be used to resolve JavaScript promises for which the corresponding deferred object is available.
// This effectively means that the promise must have been created using napi_create_promise() and the deferred object returned from that call must have been retained in order to be passed to this API.
func ResolveDeferred(env Env, deferred Deferred, resolution Value) Status {
return Status(C.napi_resolve_deferred(
C.napi_env(env),
C.napi_deferred(deferred),
C.napi_value(resolution),
))
}
// This API rejects a JavaScript promise by way of the deferred object with which it is associated.
// Thus, it can only be used to reject JavaScript promises for which the corresponding deferred object is available.
// This effectively means that the promise must have been created using napi_create_promise() and the deferred object returned from that call must have been retained in order to be passed to this API.
func RejectDeferred(env Env, deferred Deferred, rejection Value) Status {
return Status(C.napi_reject_deferred(
C.napi_env(env),
C.napi_deferred(deferred),
C.napi_value(rejection),
))
}