約束!じゃないです。Promise非同期処理!

ワン
2020-02-04
ワン
2020-02-04

前置き

皆さん!こんにちは!

久しぶりですね。遅くなりまして、、、、、す、、、すみません!
ワンです!

色々、生活に慣れるため遅くなりました!
以上、言い訳でした。🙇‍♂️

では!今回はJavascriptで、とても!有効に使える【Promise】について説明します!
さっさと、はじめましょうか!

Promiseというのは?


???:ワンさん、まずJavascriptのPromiseって何のか、簡単な説明をお願いいたします。

ワン:はい!

。。。🙄

Promiseというのは基本Javascriptで「非同期処理」に使われる「Object」です!

非同期処理は「リクエストとレスポンスにおいて同期化の順序に束縛されずに、処理の順序を変えれる」という長所があります。

では、一旦やってみましょうか!

内容


Promiseには、三つのstateがあります。

  • Pending(待機) : 非同期処理のロジックがまだ完了されない状態
  • Fulfilled(履行) : 非同期処理が完了されて、Promiseより結果を返還した状態
  • Rejected(失敗) : 非同期処理の失敗または、エラーが発生した状態
では、最初からやってみましょう!

まず、Promiseの基本系です。

1. 待機
```
new Promise(function ( resolve, reject )) {
//ここはfunction()~
};
```

2. 履行
```
new Promise(function ( resolve, reject )) {
 resolve();
};
```
ここで、resolve()を実行すると「履行」の状態になります。

もっと、具体的な例を挙げます。

```
function Friday() {
return new Promise(function (resolve, reject) {
var today = '金曜日'
 resolve(today);
});
} 

// Promiseでresolve()された結果をresolved_valueでもらいます。 
Friday().then(function (resolved_value) { console.log('i like ' + resolved_value);
// i like 金曜日
});

```
resolve()後は、then()を通じて結果をもらって次の処理を続けます。

3. 失敗
Promiseはreject()を通じて、失敗する時の処理も可能です。
```
new Promise(function (resolve, reject) {
reject();  //失敗
});
```

これを、catchでエラーもらえます。


```
function Monday() { return new Promise(function (resolve, reject) {
reject(new Error("月曜日午前8時"));
});
}

// reject()の結果 Errorを mondayでもらいます。
Monday().then().catch(function (monday) {
console.log('エラー : ' + moday);
// エラー : 月曜日午前8時
});
```

これで、Promiseの説明が終わりました。

最後に。。。

簡単な例を挙げます。

ex) 簡単なPromise


```
function promise_test(test) { return new Promise(function (resolve, reject) {
if (test != null) {
resolve(test);
}
reject(new Error("test is null"));
});
}

// 成功した場合にはresolve()、失敗した場合には reject()の結果を返す
promise_test().then(function (data) {
console.log(data); // testを表示
}).catch(function (err) {
console.error(err); // エラー表示
});

```

ex) Promise Chaning「複数のPromiseを使う」


```
new Promise(function(resolve, reject){
resolve(0);
}) .then(function(result) {
console.log(result); // 1
return result + 10;
}) .then(function(result) {
console.log(result); // 10
return result + 10;
}) .then(function(result) {
console.log(result); // 30
});

```

では、最後にPromiseのロジックを添付して終わります。

スクリーンショット 2020-02-04 14.58.19.png
出所:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

皆さん、お疲れ様でした!
では、また今度!