0.0.4 • Published 11 years ago

promqueen v0.0.4

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

promqueen

This is a very simple promises library I wrote in an afternoon, mainly after reading https://gist.github.com/3889970. I wanted to implement them out of curiosity, but it turned out to be a little harder than I thought.

Promises are a beautiful solution to nested callbacks, and unless you're writing high performance code (in which case I would ask why you're using Javascript), I believe the payoff in developer productivity is much greater than the performance overhead imposed by the library. See below for benchmarks.

I haven't set out to replicate CommonJS promises (Promises/A, B, etc.), but IMHO, this library has got the gist of it (i.e. chaining promises & capturing error handlers downstream).

Enjoy!

Example

A naive file copy example:

fs = require 'fs'
promqueen = require 'promqueen'

promoteNodeCallback = promqueen.promoteNodeCallback

readFile = promoteNodeCallback(fs.readFile)
writeFile = promoteNodeCallback(fs.writeFile)

readFile(__filename).then (err, data) ->
	data.toString()
.then (result) ->
	writeFile 'temp.txt', result
.fail (err) ->
	throw err

Benchmarking

On my PC, I read a file into memory & wrote it a file 200,000 times using both callbacks & promises, and the difference in performance is negligible.

  • callback elapsed: 10472ms
  • promqueen elapsed: 11175ms

To run the benchmark: coffee test/bench.coffee

Interesting reads