(node.js)(javascript)(promise) まずはPromiseを使う時の超基本

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);
	}
);