表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

132/210

外部データ取り込み色々テスト中3

さて、迷走していますがpromiseについて(私が)学んでいきたいと思います。


説明の分かりやすそうなサイトとサンプルとして役に立ちそうなサイトを下記に示します。


とほほのPromise入門

https://www.tohoho-web.com/ex/promise.html


PromiseによるJavaScript非同期処理レシピ集

https://sbfl.net/blog/2019/11/04/promise-cookbook/


Promiseとasync/awaitでJavaScriptの非同期処理をシンプルに記述する

https://sbfl.net/blog/2016/07/13/simplifying-async-code-with-promise-and-async-await/


二番目のサイトの最初の方の説明が(概念としても実際のコーディングのイメージとしても)判りやすかったので、引用させていただきます。


------------------------------------------

Promiseは状態を持つオブジェクトで、「処理中(pending)」「解決(fulfilled)」と「リジェクト(rejected)」の3状態を持ちます。何らかの処理が終わると解決し、処理中にエラーが発生するなどしたらリジェクトされます。


解決したPromiseはthenメソッドで受け取ることができ、リジェクトされたPromiseはcatchメソッドで受け取ることができます。解決しようとリジェクトしようと強制的に実行するfinallyメソッドもあります。


同期処理においてPromiseはあまり役に立ちませんが、非同期処理となると強い効果を発揮します。非同期処理は「いつ終わるかわからない」処理ともいえます。そういった処理の終了/エラーをトリガーに次の処理に移れるのは、非常に便利です。

------------------------------------------


非同期(ネットのどこかからデータを持ってくるのも非同期ですね)の処理を行う時に、心強そうな方法なわけですね。


とりあえず、ちょっとずつテストコードを書いていき、最終的には外部サイトのJSONデータを扱える機能をionicプロジェクトで実現するのが目標になります。(リアルタイムでテストしています。つまり現在進行形の話なので目標に到達するかの保証はありません。失敗も含めて記録を書いていきます。)





四苦八苦は大袈裟ですが、サンプルがjavascriptという事も有り、微妙にシンタックスエラー(書き方の上でのエラー)が出ましたが、なんとかごくごく簡単なコードは動きました。


---------------------------------------------------------------

//test promise(ionViewDidEnter()内に記述)

const promise = new Promise<void>((resolve, reject) => resolve()); // Promiseを作成し、終了する

promise.then(() => console.log('done!')); // Promiseが終了したら「done!」と表示する

---------------------------------------------------------------


ちなみに戻り値<void>(何も無いという値)の追加が必要でした。



次は非同期のコードです。


------------------------------------------

  const promise = new Promise<void>((resolve, reject) => {

   setTimeout(() => {

     console.log('hello : %s' , Date());

     resolve();

   }, 5000);

  });

  console.log('時は春、日は明日 : ' + Date());

  promise.then(() => console.log('world! : ' + Date()));

------------------------------------------


意図通り、console.logには次の順序で表示されています。(非同期になっていますね)

時は春、日は明日 : Sun Jul 24 2022 09:45:50 GMT+0900 (日本標準時)

hello : Sun Jul 24 2022 09:45:55 GMT+0900 (日本標準時)

world! : Sun Jul 24 2022 09:45:55 GMT+0900 (日本標準時)



アロー関数と言うのも、慣れていないですが多少判ってきた気がします。


アロー関数

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions


ちょっと脱線します。


プログラム等に縁がない方は、プログラム言語だとかIT技術とか完成していないかもしれないけれど堅固なものと思っていらっしゃるかもしれません。


私の印象ではむしろあやふやで、どんどん変化するスライムのような印象を持っています。


成長や変化が止まり成熟化するか、ちょっと自信ないですね。


閑話休題





う~ん、まったくわからない。


確かに、AngularにはJSONPを受け取るための機能はあるようだけど使い方が判らない。

node_modules\@angular\common\http\index.d.ts


かなり長引きそうです・・・

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ