Promiseで非同期なNodeの順次処理を行う
Nodeは非同期で処理を行うため、データベースのテーブルを順番に処理するなんてときに同期での処理を行う必要が出てきます。
基本的にはCallbackを利用して処理をするのですが、何段かも処理をする場合、Callbackのネストが深くなってきちゃいます。
db.any( “SELECT 〜” )
.then( function( rows ) {
db.any( “SELECT 〜” )
.then( function( rows ) {
})
.catch( function( err ) {
}
})
.catch( function( err ) {
});
めっちゃデバッグがしにくくなっちゃいまする〜
Promiseを利用して処理します。
そんなCallback地獄を防ぐため、Promiseを利用します。
Promise.resolve()
.then( function( resolve, reject ) {
return new Promise( function( resolve, reject ) {
db.any( "SELECT 〜" )
.then( function( rows ) {
)}
.catch( function( err ) {
});
})
.catch( function( err ) {
});
})
.then( function( resolve, reject ) {
return new Promise( function( resolve, reject ) {
db.any( "SELECT 〜" )
.then( function( rows ) {
)}
.catch( function( err ) {
});
})
.catch( function( err ) {
});
})
.catch( function( err ) {
});
終わりに。。。
行数は長くなるんで、そこがなんですが。。(^^;