1.2.1 • Published 4 years ago

awaitable-array v1.2.1

Weekly downloads
21
License
MIT
Repository
-
Last release
4 years ago

Awaitable Array

Utility Library for Creating Arrays that can be awaited

Uses:

  • Writing efficient test cases

Usage

Waiting for Length

const AwaitableArray = require('awaitable-array');

// Wait until something is pushed to the array
let arr = new AwaitableArray();

setTimeout(() => arr.push(5), 500);

await arr.untilLength(1);

console.log(arr);  // [ 5 ]

Waiting for a Condition

const AwaitableArray = require('awaitable-array');

// Wait until something is pushed to the array
let arr = new AwaitableArray();

let i = 0;
let interval = setInterval(() => arr.push(++i), 500);

// after 2500 ms
await arr.untilCondition(arrayInstance => arrayInstance.includes(5));

console.log(arr);  // [ 1, 2, 3, 4, 5 ]

clearInterval(interval);

Create From Existing

const AwaitableArray = require('awaitable-array');
let arrExisting = [ 1, 2, 3, 4 ];

// Use the spread operator to expand the array to create a new AwaitableArray
let arr2 = new AwaitableArray(...arrExisting);

// Resolves Immediately (next tick)
await arr2.untilLength(4);

console.log(arr); // [ 1, 2, 3, 4 ]

Padding Response Time

const AwaitableArray = require('awaitable-array');
// Can also pass in a padding (wait at LEAST this time) and a Timeout
let arr3 = new AwaitableArray();

const padding = 10;
const timeout = 50;   // Defaults to 2000ms
await arr3.untilLength(100, padding, timeout);  // Waits 50ms

// Wait at LEAST 10ms
const arr4 = new AwaitableArray(...[1, 2, 3]);

const padding = 10;
await arr4.untilLength(3, padding);  // Waits 10ms

Timeout Errors

// Timeout Error
const arr5 = new AwaitableArray(...[1, 2]);

try {
  await arr5.untilLength(30, 0, 1000);  // Throws Promise.TimeoutError after 1 second
} catch (e) {
  console.log(e); // Promise.TimeoutError (see http://bluebirdjs.com/docs/api/timeout.html)
}

Notes

Requires Node6 or Higher

1.2.1

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago