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));