読者です 読者をやめる 読者になる 読者になる

kkana's blog

新米コーダーの忘れそうなことメモ

promiseを初めて使ったときのメモ

ECMAscript2015 のpromiseを使う機会があったので、メモ

ここが詳しい azu.github.io

promiseとは

非同期処理を抽象化したもの promiseに続けてthen(成功時).catch(失敗時)を書く。わかりやすい!
thenの引数の二つ目には失敗時の処理を渡すことができる。

promiseオブジェクトの作成と書き方

promiseオブジェクトは返り値がpromiseオブジェクト。
失敗したときはrejectを、
成功した時はresolveを呼びだす。

var promise = new Promise(function (resolve, reject) {
  // ここに非同期処理を書く。
  if (/* 失敗した場合 */) {
    reject();
    return;
  }
  if (/* 成功した場合 */) {
    resolve(/*ここに非同期通信で取得したデータなど*/);
  }
});

resolveに渡されたものは、そのpromiseに続けて書いたthenに設定された関数に渡される。

promise.then(function(data){
  //成功した後の処理
}).catch(function(){
  //失敗したあとの処理
});

複数のpromiseオブジェクトが全て成功した時の処理

Promise.allメソッド 引数としてPromiseの配列を渡すと、全て成功したら成功となるような新しいPromiseを作って返す。
帰ってくる値の順所は引数に書いた順。  

Promise.all([一個目の処理, 二個目の処理]);

複数のpromiseオブジェクトのどれかひとつが解決した時の処理

引数のうちどれかひとつが解決(成功でも失敗でも)したらpromiseをかえす。

Promise.race([一個目の処理, 二個目の処理]);

だいぶ見通しよく書くことができたので満足!