3 category: JavaScript libraries
10 * <https://github.com/kriskowal/q>
11 * <https://github.com/kriskowal/q/wiki/API-Reference>
13 ### Creating promises (Q.promise)
15 Q.promise (ok, fail) =>
18 fail new Error("Failure")
24 promises = [saveDisk(), saveCloud()]
26 # When all succeeds, or *at least one* error
27 Q.all(promises).done ->
30 # Same, but get the values
31 Q.all(promises).spread (a, b) ->
35 # When all either succeeds or errors
36 Q.allSettled(promises).done -> ...
39 ### Creating promises from Node
41 # Works like .call() or .apply()
43 Q.nfcall(FS.readFile, 'foo.txt', 'utf-8')
46 Q.nfapply(FS.readFile, ['foo.txt', 'utf-8'])
49 Q.npost(FS, 'readFile', ['foo.txt, 'utf-8'])
52 Q.npost(FS, 'readFile', 'foo.txt, 'utf-8')
55 readFile = Q.denodeify(FS.readFile)
56 readFile('foo.txt').then -> ...
58 ### Promises to Node async
60 createUser = (next) ->
66 # Shortcut for .then(ok, fail, progress)
70 .progress (percent) ->
78 console.error "Oh well", e