From 69593662f47e5c797cc8076d72d70ac24d3813f7 Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 3 Aug 2023 19:37:35 +0200 Subject: new format of external functions for new promise --- src/ffi.mjs | 8 ++++++++ src/gleam/javascript/promise.gleam | 3 +++ 2 files changed, 11 insertions(+) (limited to 'src') diff --git a/src/ffi.mjs b/src/ffi.mjs index 4aa6995..3889aa8 100644 --- a/src/ffi.mjs +++ b/src/ffi.mjs @@ -81,6 +81,14 @@ class PromiseLayer { } } +export function newPromise(executor) { + return Promise.resolve((resolve) => + executor((value) => { + resolve(PromiseLayer.wrap(value)); + }) + ); +} + export function resolve(value) { return Promise.resolve(PromiseLayer.wrap(value)); } diff --git a/src/gleam/javascript/promise.gleam b/src/gleam/javascript/promise.gleam index 8d531eb..db8a7ef 100644 --- a/src/gleam/javascript/promise.gleam +++ b/src/gleam/javascript/promise.gleam @@ -5,6 +5,9 @@ import gleam/javascript/array.{Array} // TODO: labels pub type Promise(value) +@external(javascript, "../../ffi.mjs", "newPromise") +pub fn new(a: fn(fn(value) -> Nil) -> Nil) -> Promise(value) + @external(javascript, "../../ffi.mjs", "resolve") pub fn resolve(a: value) -> Promise(value) -- cgit v1.2.3