1.1.1 • Published 11 years ago

dead-simple-promises v1.1.1

Weekly downloads
31
License
-
Repository
github
Last release
11 years ago

Dead-Simple Promises, js

Yet another future/promise variant for Javascript.

PROMISE!

This one's distinction is very simple semantics, supported by some equational laws, and a pretty fast implementation. The goal is to have promises that can wrap every single async call in an io-heavy node application and still survive the speed hit, together with being relatively no-brainer to use.

Currently, the hit is around 40% for pure in-process workloads and much lower with intermittent callouts. See slake bench.

Documentation

TODO, but the single source file is short and documented.

Like so:

Given a path, return paths and sizes of filesystem objects for the filesystem subtree:

var promise = require('dead-simple-promises'),
    fsp     = promise.owrap(require('fs')),
    util    = require('util');

function fileSizes (path) {
  return fsp.stat(path).then(function (stat) {
    if (stat.isDirectory()) {
      return fsp.readdir(path).then(function (files) {
        for (var i = 0; i < files.length; i++) {
          files[i] = fileSizes(path + "/" + files[i]);
        }
        return promise.seq(files).then(function (subtree) {
          return { path: path, stat: stat.size, sub: subtree }
        });
      });
    } else {
      return promise( { path: path, size: stat.size } );
    }
  });
}

fileSizes (wherever)
  .then (function (tree) { console.log ('x', tree); })
  .onError (function (err) { console.log ("error:", err); })
require! { promise: \dead-simple-promises, util }
fsp = promise.owrap require \fs

file-sizes = (path) ->
  {size}: stat <- fsp.stat path .then
  if stat.is-directory!
    files <- fsp.readdir path .then
    files |> map -> file-sizes "#path/#it"
          |> promise.seq |> (.then -> {path, size, sub: it})
  else promise {path, size}

file-sizes wherever .then     (util.inspect >> console.log)
                    .on-error (console.log 'error:', _)
1.1.1

11 years ago

1.1.0

11 years ago

1.0.0

11 years ago

0.1.4

11 years ago

0.1.3

11 years ago

0.1.2

11 years ago

0.1.1

11 years ago

0.0.2

11 years ago

0.0.1

11 years ago