Dart Promise

style: very good analysis License: MIT

This library provides a Promise class that emulates JavaScript-like promise functionality in Dart. It aims to simplify asynchronous programming in Dart, offering an alternative way to handle asynchronous operations with more control over error handling and chaining.

Features

  • Promise Creation: Easily create promises that encapsulate asynchronous operations.
  • Error Handling: Robust error handling using catchError method, which allows continuation of promise chains even when errors occur.
  • Flexible Error Handlers: Supports both synchronous and asynchronous error handlers through FutureOr<T>.

Getting Started

To get started with the Dart Promise library, add it to your Dart project by including it in your pubspec.yaml file under dependencies:

dependencies:
  dart_promise: ^0.0.1+1

Usage

Here’s how you can use the Promise class to perform asynchronous operations and handle errors gracefully:

import 'package:dart_promise/dart_promise.dart';

void main() {
  // Create a new promise
  Promise<String> myPromise = Promise<String>((resolve, reject) {
    // Simulate an asynchronous operation like fetching data from a server
    Future.delayed(Duration(seconds: 1), () {
      resolve("Data fetched successfully!");
      // Uncomment the next line to simulate an error
      // reject("Failed to fetch data");
    });
  });

  // Using the promise
  myPromise
    .then((data) => print(data))
    .catchError((error) => print("Error: $error"));
}

API Reference

  • Promise<T>(Executor<T> executor): Constructor to create a new promise. The executor function takes two parameters: resolve and reject which are used to settle the promise.
  • Future<T> catchError(OnRejected<T> onRejected): Method to handle errors in the promise chain. onRejected can be either a synchronous or asynchronous function.
  • Future<R> then<R>(OnFulfilled<T, R> onFulfilled): Method to handle successful completion of the promise chain. onFulfilled can be either a synchronous or asynchronous function.

Contributing

Contributions to the Dart Promise library are welcome. Please feel free to fork the repository, make your changes, and submit a pull request.

License

This library is distributed under the MIT License. See the LICENSE file in the repository for more information.

Libraries

dart_promise