Browse Source

README: API and uses.

Herbert Vojčík 8 years ago
parent
commit
a049a18353
1 changed files with 45 additions and 0 deletions
  1. 45 0
      README.md

+ 45 - 0
README.md

@@ -1,2 +1,47 @@
 # repre
 Recurring (looping until succeeded) promise.
+
+## API
+
+Get the class with `var Repre = require('repre')`.
+
+ - `var repre = new Repre(factoryFn, step = 100)`
+
+Creates new recurring promise. You must pass
+the factory function to the constructor.
+This factory is used when looping.
+
+ - `repre.loop()`
+
+The factory function will create the promise
+that it is tried to resolve; in case of rejection,
+another try is done after `step` ms, over and over.
+
+ - `repre.stop()`
+
+Signals the actually looping promise that it should not
+start another iteration in case of rejection; and returns it.
+This signals that looping should stop, and the original promise
+(as well as `.stop()` which just returns it) evetually either
+resolve or reject.
+
+Calling `stop()` for already noniterating (resolved
+or stopped before) Repre is safe and immediately resolves.
+
+ - `repre.stopAndForget()`
+
+Returns `repre.stop().catch(noop)`, that is,
+`stopAndForget` returns a promise which is
+resolved whenever running promise is settled,
+no matter if by resolving or by rejection.
+
+## Uses
+
+Useful in functional tests, for example using WebDriver.
+One sets up a scenario and then returns a Repre which
+tries to read all things that eventually appear in a page
+up to final assertions; plus `setTimeout(() => repre.stop(), someTimeBeforeTestTimesOut)`.
+That way, things are tried until either resolved,
+or they are rejected (with correct error) just before test would time out.
+
+It is also good to call `repre.stopAndForget().then(...)` in `afterEach`.