0.4.1 • Published 8 years ago

wait-promise v0.4.1

Weekly downloads
4,870
License
MIT
Repository
-
Last release
8 years ago

wait-promise

npm status build status dependency status coverage status

Make a promise, waiting for a specified amount of time, util something is done. Syntactic sugar for setTimeout and setInterval. Based on ES6 Promise.

Use it in nodeJS

A version compiled to ES5 in CJS format is published to npm as wait-promise.

npm install wait-promise

in ES5:

var wait = require('wait-promise');

in ES6/7:

import {check, until, till, before, after, limit, every, and, sleep} from 'wait-promise';

Use it on browser

wait-promise CDN

<script src="https://s5.ssl.qhimg.com/!e29d1180/wait-promise.min.js"></script>

You can use it with any AMD loader or standalone

var promise = wait.before(5000).until(function(){
  return typeof Babel !== 'undefined';
});

promise.then(function(){
  code = Babel.transform(code, { presets: ['es2015-loose', 'react', 'stage-0'] }).code;
}).catch(function(){
  console.error('Cannot load babeljs.');
});

API Doc

check

wait.check(condition) always returns a promise. If condition throws error or returns false value explicitly, the promise will be rejected.

let i = 1;
let promise = wait.check(function(){
  return i < 1;
});
promise.catch(function(err){
  console.log(err.message); //will be check failed
});

until

wait.until(condition)

Check condition async and re-check every 100ms until it neighter throws error nor returns false.

let i = 0;
let promise = wait.until(function(){
	return ++i >= 10;
});
promise.then(function(){
	console.log(i); //i will be 10
});

With async/wait

let until = wait.until;

async function foo(){
	let i = 0;
	
	await until(() => ++i > 10);
	bar();
}

till

wait.till(condition)

Check condition async and re-check every 100ms till it explicitly returns true. If condition throws error, the promise will be rejected.

let i = 0;
let promise = wait.till(function(){
  return ++i >= 10;
});
promise.then(function(){
  console.log(i); //i will be 10
});

before

wait.before(millisec).until(condition)

Check condition in millisec. If time out, the promise will be rejected.

let i = 0;
let promise = wait.before(200).until(function(){
	return ++i >= 10;
});
promise.catch(function(err){
	console.log(i, err.message); //2 check failed
});

after

wait.after(millisec).check(condition)

Check condition after millisec.

let i = 1;
setTimeout(function(){
	++i;
}, 0); 
let promise = wait.after(1000).check(function(){
	return i > 200;
});

limit

Check condition with limit times. If exceed the limit, the promise will be rejected.

let i = 0;
let p = wait.limit(10).until(function(){
  i++;
  return false;
});
return p.catch(function(){
  console.log(i); //i will be 10
});

every

wait.every(millisec,limit).until(condition)

Change time interval from 100ms to millisec

let i = 0;
let promise = wait.every(10).before(200).until(function(){
	return ++i >= 10;
});
promise.then(function(){
	console.log(i) // i will be 10
});

every with limit

wait.every(1, 10) is equal to wait.every(1).limit(10)

let i = 0;
let p = wait.every(1, 10).till(function(){
  return ++i >= 10;
});
p.catch(function(){
  console.log(i); //i will be 10
});

and

wait.every(millisec).and(func).until(condition)

Check every millisec time and do something before checking condition.

async function foo(){
  let i = 0, j = 0;
  await and(() => j++).until(() => j >= 3);
  await every(50).and(() => i++).until(()=> i >= 5);
  console.log(i + j); //will be 8
}

sleep

wait.sleep(millisec)

Do nothing but sleep millisec

var promise = wait.sleep(200);
promise.then(function(){
	//do sth.
});

With async/await

let sleep = wait.sleep;

async function foo(){
	await sleep(500);
	bar();
} 

LICENSE

MIT

pioneer-cosmos-tx-ingestercore-web-rendering-templates-ui-tests@everything-registry/sub-chunk-3109pioneer-bnb-block-ingesterpioneer-clipioneer-corekeepkey-hardware-hidicedfrisby@coinmasters/e2e-transfer-arbitrum@pioneer-platform/cosmos-e2e-ibc-deposit@pioneer-platform/cosmos-e2e-ibc-withdrawal@pioneer-platform/cosmos-e2e-transfer@pioneer-platform/cosmos-network@pioneer-platform/cosmos-osmosis-e2e-swap-batch@pioneer-platform/cosmos-osmosis-e2e-swap-batch-keepkey@pioneer-platform/dogecoin-e2e-transfer@pioneer-platform/eth-e2e-liquidity-add@pioneer-platform/eth-e2e-sdk@pioneer-platform/eth-e2e-sdk-swap@pioneer-platform/eth-e2e-sdk-swap-keepkey@pioneer-platform/eth-e2e-sdk-swap-metamask@pioneer-platform/eth-network@pioneer-platform/ethereum-e2e-tranfer@pioneer-platform/app-bitcoin-e2e-swap@pioneer-platform/app-bitcoin-e2e-transfer@pioneer-platform/app-bitcoincash-e2e-swap@pioneer-platform/app-osmosis-e2e-transfer@pioneer-platform/atlas-e2e-cancel@pioneer-platform/avax-network@pioneer-platform/binance-network@pioneer-platform/bitcoin-e2e-transfer@pioneer-platform/bitcoincash-e2e-sdk@pioneer-platform/bitcoincash-e2e-transfer@pioneer-platform/bnb-e2e-transfer@pioneer-platform/pioneer-hardware-web@pioneer-platform/pioneer-intelligence@pioneer-platform/pioneer-network@pioneer-platform/rbf-ethereum-e2e@pioneer-platform/support-asset-context-switch@pioneer-platform/support-e2e-cancel@pioneer-platform/support-e2e-context-switching@pioneer-platform/support-e2e-forget-user@pioneer-platform/support-e2e-pair-keepkey@pioneer-platform/support-e2e-pair-keplr@pioneer-platform/support-e2e-pair-metamask@pioneer-platform/support-e2e-pair-multi@pioneer-platform/support-e2e-querykey-migration@pioneer-platform/osmosis-e2e-redelegate@pioneer-platform/osmosis-e2e-swap@pioneer-platform/osmosis-e2e-transfer@pioneer-platform/osmosis-e2e-transfer-keepkey@pioneer-platform/osmosis-e2e-undelegate@pioneer-platform/pioneer-events@pioneer-platform/pioneer-explore@pioneer-platform/pioneer-hardware@pioneer-platform/keepkey-electron-app@pioneer-platform/litecoin-e2e-sdk@pioneer-platform/litecoin-e2e-transfer@pioneer-platform/offline-electron-app@pioneer-platform/online-electron-app@pioneer-platform/osmosis-cosmos-e2e-swap-batch@pioneer-platform/osmosis-cosmos-e2e-swap-batch-keepkey@pioneer-platform/osmosis-e2e-delegate@pioneer-platform/osmosis-e2e-ibc-withdrawal@pioneer-platform/osmosis-e2e-join-pool@pioneer-platform/osmosis-e2e-lp-add@pioneer-platform/osmosis-e2e-lp-remove@pioneer-platform/thorchain-e2e-swap@pioneer-platform/thorchain-e2e-transfer@pioneer-platform/tokens-e2e-sdk@fomobro/fomo-core@fomobro/fomobotswaps-cliswapkit-cli@coinmasters/integration-wallet-keystore@coinmasters/integration-wallet-package-keepkey@coinmasters/integration-wallet-package-keystore@coinmasters/intergration-user-init-multi@coinmasters/e2e-lp-cacao-dash@coinmasters/e2e-lp-rune-doge@coinmasters/e2e-swap-base-eth@coinmasters/e2e-swap-base-pro@coinmasters/e2e-swap-bitcoincash-doge@coinmasters/e2e-swap-bitcoincash-doge-memoless@coinmasters/e2e-swap-dash-rune@coinmasters/e2e-swap-doge-bitcoincash@coinmasters/e2e-swap-doge-bitcoincash-memoless@coinmasters/e2e-transfer-base@coinmasters/e2e-transfer-bitcoin@coinmasters/e2e-transfer-bitcoin-cash@coinmasters/e2e-transfer-cacao@coinmasters/e2e-transfer-dash@coinmasters/e2e-transfer-dogecoin@coinmasters/e2e-transfer-ethereum@coinmasters/e2e-transfer-ethereum-usdt@coinmasters/e2e-transfer-mayachain@coinmasters/e2e-transfer-osmosis@coinmasters/e2e-transfer-pro@coinmasters/e2e-transfer-ripple@coinmasters/e2e-transfer-zcash
0.4.1

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago