nodejsでの逐次処理について
nodejs の逐次処理について質問です。
- JavaScript Promiseの本
https://azu.github.io/promises-book/
上記サイトを参考に、コールバック地獄を回避するために、以下のようなタスク1~3の逐次処理するロジック(タスクの処理結果を次のタスクに渡す)を記載し、希望通りタスク1~3が逐次実行されるのは確認できました。
ですが、js 初心者のため、以下の疑問が出てきましたので質問させていただきました。
(抽象的な質問で申し訳ありません。。。)
(1) このやり方が一般的なのでしょうか?
(2) このやり方での問題点は何かありますでしょうか?
とりあえず動作確認のみ行いました。が、このロジックが正しいかどうかの判断がついていません。
// 何かしらの非同期処理
// この関数では入力パラメータの value に +1 するだけ
// 入力パラメータの error は reject を発生させて、catch() が動作しているか確認用
function async_task(value,error) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
if (error === undefined){
resolve(value+1);
}
else {
reject(error);
}
}, 1000);
});
}
// var promise = async_task(1,'task1 error'); // 処理1(エラー発生させる場合)
var promise = async_task(1); // 処理1
promise.then( (result) => {
console.log(`task1 end: result:${result}`);
return async_task(result); // 処理2
}).then( (result) => {
console.log(`task2 end: result:${result}`);
return async_task(result); // 処理3
}).catch( (error) => {
// どっかでエラーが発生した
console.log(error);
}).then( (result) => {
// 最後のまとめ処理
console.log('complete');
});
以上、宜しくお願いいたします。