JavaScript 入門 Promise の引数について
Promise の引数には関数を渡します。その関数の引数には、resolve と reject という二つの引数を持たせます。
(resolve, reject) => {
//非同期処理
}
以下はPromiseの引数に渡す関数で、2秒待ったあとに100を返します
// Promise の引数として渡す関数
const asyncFunc = (resolve, reject) => {
setTimeout(() => {
resolve(100);
}, 2000);
};
これをPromiseの引数に渡して実行します。
const asyncFunc = (resolve, reject) => {
setTimeout(() => {
resolve(100);
}, 2000);
};
new Promise(asyncFunc)
.then(v => console.log(v));
then の v は、resolve の引数の 100 になります。
試しに、resolve(100) を resolve(200) にすると、コンソールに表示されるのも 200 になります。
const asyncFunc = (resolve, reject) => {
setTimeout(() => {
resolve(200); // ここを100から200に変更する
}, 2000);
};
new Promise(asyncFunc)
.then(v => console.log(v)); //v は 200
reject を使うと、catch の引数にその値がきます。
const asyncFunc = (resolve, reject) => {
setTimeout(() => {
reject(300);
}, 2000);
};
new Promise(asyncFunc)
.then(v => console.log(v))
.catch(e => console.log(e)); //e は 300
resolve は成功時、reject は失敗時に実行します。
const asyncFunc = (resolve, reject) => {
setTimeout(() => {
// 何らかの条件判定
if(false){
resolve(100); // 成功時には100を返す
}else{
reject(0); // 失敗時には0を返す
}
}, 2000);
};
new Promise(asyncFunc)
.then(v => console.log(v))
.catch(e => console.log(e));
最近のコメント