コミットメントコード

14002 ワード

🦊 Promiseの作成

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('result');
  }, 1000)
})



myPromise
.then(result => {
  console.log(result)
})
.catch(e => {
  console.error(e)
}
const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject(new Error());
  }, 1000)
})



myPromise
.then(result => {
  console.log(result)
})
.catch(e => {
  console.error(e)
}

🦊 Promise(そして、catch)を使う

function increaseAndPrint(n) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const value = n + 1;
      if (value === 3) {
        const error = new Error();
        error.name = 'ValueIsFiveError';
        reject(error);
        return;
      }
      console.log(value);
      resolve(value);
    }, 1000)
  })
}

increaseAndPrint(0)
.then(n => {
  return increaseAndPrint(n);
  }
)
.then(n => {
  return increaseAndPrint(n);
  }
)
.then(n => {
  return increaseAndPrint(n);
  }
)
.catch(e => {
  console.error(e);
})

コンテキストが同じ
そして上の結果を自動的にパラメータとして入れます
function increaseAndPrint(n) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const value = n + 1;
      if (value === 3) {
        const error = new Error();
        error.name = 'ValueIsFiveError';
        reject(error);
        return;
      }
      console.log(value);
      resolve(value);
    }, 1000)
  })
}


increaseAndPrint(0)
.then( increaseAndPrint)
.then( increaseAndPrint)
.then( increaseAndPrint)
.catch(e => {
  console.error(e);
}