JS Promiseチェーン¶
then()
メソッドを使うと以下のように書ける。
new Promise(resolve => {
setTimeout(() => {
console.log(5);
resolve();
}, 1000);
})
.then(() => {
return new Promise(resolve => {
setTimeout(() => {
console.log(4);
resolve();
}, 1000);
});
})
.then(() => {
return new Promise(resolve => {
setTimeout(() => {
console.log(3);
resolve();
}, 1000);
});
})
promiseを変数に格納することで、少しスッキリ書ける。
const promiseObj = new Promise(resolve => {
setTimeout(() => {
console.log(5);
resolve();
}, 1000);
});
promiseObj.then(() => {
setTimeout(() => {
console.log(4);
}, 1000);
});
// 複数回then()することもできる。
promiseObj.then(() => {
setTimeout(() => {
console.log('もう1個!');
}, 1000);
});
さらにスッキリさせると
const promiseMaker = num => {
return new Promise(resolve => {
setTimeout(() => {
console.log(num);
resolve();
}, 1000);
});
};
promiseMaker(5)
.then(() => promiseMaker(4))
.then(() => promiseMaker(3))
.then(() => promiseMaker(2))
.then(() => promiseMaker(1))
.then(() => promiseMaker(0));