Skip to content
This repository was archived by the owner on Nov 23, 2024. It is now read-only.

Latest commit

 

History

History

promises

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Promises

Basic

function foo() {
	return new Promise((resolve, reject) => {
		resolve('foo');
	})
}

foo().then((value) => {
	console.log('done', value);
});

Series

function foo() {
	return Promise.resolve()
		.then(() => {
			return new Promise((resolve, reject) => {
				resolve('foo');
			});
		})
		.then((last) => {
			return new Promise((resolve, reject) => {
				resolve(last + ' bar');
			});
		})
	;
}

foo().then((value) => {
	console.log('done:', value);
});

Parallel

function foo() {
	return Promise.all([
		new Promise((resolve, reject) => {
			resolve('foo');
		}),
		new Promise((resolve, reject) => {
			resolve('bar');
		}),
	]);
}

foo().then((values) => {
	console.log('done:', values);
});

Errors

function foo() {
	return new Promise((resolve, reject) => {
		reject('foo');
	})
}

foo()
	.then((value) => {
		console.log('done', value);
	})
	.catch((err) => {
		console.log('error', err);
	})
;


function bar() {
	return new Promise((resolve, reject) => {
		throw new Error('bar');
	})
}

bar()
	.then((value) => {
		console.log('done', value);
	})
	.catch((err) => {
		console.log('error', err);
	})
;

Timeout

function timeout(duration = 0) {
	return new Promise((resolve, reject) => {
		setTimeout(resolve, duration);
	});
}

var p = timeout(1000)
	.then(() => {
		console.log('foo');
		return timeout(1000);
	})
	.then(() => {
		console.log('bar');
	})
;