node.jsに関する記事一覧→ node.jsのまとめ
関数の中に関数を書くパターンが続くのでそれに慣れていないと混乱してしまいがちです
まずは Promiseを使う時の超基本的な流れからです
Promiseのインスタンスを生成して その中で非同期処理を行い その結果をresolveで受け側の処理に渡し 先程生成したPromiseのインスタンスのthen関数が受け側になり thenの中で後処理を行います
ハハッ!!、なんのこっちゃ~
実際に見てみた方が分かりやすいと思います
#!/usr/local/bin/node // コンソール出力を簡潔に実行できるように const puts = console.log; const print = (str)=>{process.stdout.write(str)}; // Promiseのインスタンスを作成します // Promiseのコンストラクタに渡す引数は // 第一引数に成功時に呼び出す関数を受ける変数名 // 第二引数に失敗時に呼び出す関数を受ける変数名 // 一般的には resolve と reject という名前を使います const prms = new Promise((resolve, reject)=>{ // 今回は例を簡単にするため成功時のみを想定し // resolveの引数に値を決め打ちしてますが // 実際はここに非同期処理を書いて // その結果をresolveの引数に渡します // この値が受け側の処理に渡されることになります // 例えば、Promise形式ではない非同期処理をここに書くことによって // Promise形式として取り扱えるようになります resolve('hello world!'); }); // prms には Promiseのインスタンスがセットされています // このインスタンスに .then と続けると // 渡されてきた値を受け取ることが出来ます // Promiseの中身の処理が非同期処理であっても // resolve か reject が実行された後にthenの中身が実行されます // thenの仕様は // then(<成功時に実行される関数>, <失敗時に実行される関数>); // となっています // 第一引数の方の関数の引数には resolveで引き渡されてきた値が入っています // 第二引数の方の関数の引数には rejectで引き渡されてきた値が入っています(省略可能) prms.then( (val)=>{ puts('on_resolve'); puts(val); } );