Module @endo/promise-kit - v1.1.9

Promise Kit

The promise-kit package provides a simple abstraction for creating and managing a promise. It exports, makePromiseKit which is a utility function used to create a Promise and its associated resolver and rejector functions. This is particularly useful in asynchronous programming, where you might need to create a promise and resolve or reject it at a later point in time. Note that this serves as a "ponyfill" for Promise.withResolvers, making certain accommodations to ensure that the resulting promises can pipeline messages through @endo/eventual-send.

Here’s an example of how makePromiseKit might be used in an Agoric smart contract or JavaScript program:

import { makePromiseKit } from '@endo/promise-kit';

function asyncOperation() {

const { promise, resolve, reject } = makePromiseKit();
setTimeout(() => {
const success = true; // Simulating success or failure
if (success) {
resolve("Operation successful!");
} else {
reject("Operation failed!");
}
}, 2000);

return promise;
}

async function handleAsyncOperation() {
try {
const result = await asyncOperation();
console.log(result); // "Operation successful!"
} catch (error) {
console.error(error); // "Operation failed!"
}
}

handleAsyncOperation();

You can create multiple promise kits for managing various asynchronous tasks.

const kit1 = makePromiseKit();
const kit2 = makePromiseKit();

kit1.promise.then(value => console.log('Kit 1 resolved with:', value));
kit2.promise.then(value => console.log('Kit 2 resolved with:', value));

kit1.resolve('First success');
kit2.resolve('Second success');

Creates a new promise kit.

Returns

  • promise: The promise object.
  • resolve: The resolve function for the promise.
  • reject: The reject function for the promise.

Repository

This package is licensed under the Apache-2.0 License.

Index

Interfaces

Type Aliases

Functions