超初歩的な質問をさせていただきます。
非同期処理の勉強をしておりまして、Promise関数のところで混乱しております。
自分なりの解釈をしてみたのですが、あっているかどうか教えていただけますと幸いです。
(勉強になるページ等教えていただければそちらを参考にして勉強します。)
混乱しているところ
promiseについての記事を読んでいて
JavaSctipt
1var taskA = new Promise(function(resolve, reject) { 2 setTimeout(function () { 3 console.log('taskA'); 4 resolve(); //なんで実行されんねん 5 }, 16); 6});
4行目のresolveが実行される意味が分からない
→なんで'resolve'という関数が定義されとんねん
というところで混乱しております。
自分なりの解釈
例えば
JavaScript
1(function(){ 2 const result = function(a,b,num) { 3 if(num > 0 ){ 4 a(); 5 }else{ 6 b(); 7 } 8 } 9 10 const a = function(){ 11 console.log('aだよー'); 12 } 13 14 const b = function(){ 15 console.log('bだよー'); 16 } 17 18 result(a, b, 10);//結果は'aだよー' 19 20}())
といった関数を考えてみると
1.'result'という関数を定義する
2.'a'と'b'という関数を定義する
3.'result'という関数を実行する
という順番になります。
これを少し書き換えると
JavaScript
1(function(){ 2 const result = function(resolve, reject) { 3 setTimeout(function () { 4 resolve(); 5 }, 16); 6 } 7 8 const resolve = function(){ 9 console.log('aだよー'); 10 } 11 12 const reject = function(){ 13 console.log('bだよー'); 14 } 15 16 result(resolve, reject);//結果は'aだよー' 17 18}())
という構文が出来上がりました。
ここで先ほどの'Promise'関数に当てはめてみると
JavaScript
1Promise(function(resolve, reject) { 2 setTimeout(function () { 3 console.log('taskA'); 4 resolve(); 5 }, 16); 6}); 7 8//と書かれた文は 9 10function Promise(func){ 11 12 const result = func(); 13 /** 14 const result = function(resolve, reject) { 15 setTimeout(function () { 16 console.log('taskA'); 17 resolve(); 18 }, 16); 19 } 20 **/ 21 22 const resolve = function(){ 23 //処理内容 24 } 25 26 const reject = function(){ 27 //処理内容 28 } 29 30 result(resolve, reject); 31 32}
と書き換えることができる
だから実行することができるのだ
と解釈しております。
いかがでしょうか。
皆様のご意見頂けますと嬉しいです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/23 04:18
2019/05/23 09:59
2019/05/27 04:39