Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9055

async/awaitを使った非同期処理

$
0
0

async/awaitとは

Promiseをベースにした非同期のコードを簡単に処理するメソッド

asyncを使った時、使わない時

asyncを使うと、返り値をPromiseを使って表示させることになる。

・asyncを使わない時

constdoWork=()=>{}console.log(doWork())


「undefined」が返ってくる
(まだdoWork関数は何も定義されていないため)

・asyncを使った時

//asyncを用いて実装constdoWork=async()=>{}console.log(doWork())


「Promise{undefined}」が返ってくる

★asyncは常にPromiseを返す!!!
asyncを使うメリット

→「.then()」「.catch()」を用いて、成功時、失敗時の次の処理を記述することができる。

constdoWork=async()=>{//エラーの時のパターンを見たい場合//throw new Error('something wrong') をここに記入return"Hello World"}doWork().then((result)=>{console.log('result',result)}).catch((e)=>{console.log('e',e)})


・処理成功した時
「result Hello World」と表示される
・エラー時
「e Error:something wrong」と表示される

awaitを用いた実装

awaitを用いると、複数の非同期処理を簡単に扱える

★awaitは常に、asyncファンクションの中でしか使えない
//非同期処理、add関数の定義constadd=(a,b)=>{//返り値をPromiseで実装returnnewPromise((resolve,reject)=>{setTimeout(()=>{if(a<0||b<0){returnreject('Number must be non-negative')}resolve(a+b)},2000)})}constdoWork=async()=>{constsum=awaitadd(1,99)//もしも「await add(1, -99)」ならば、次の処理に行く前にエラーを返すconstsum2=awaitadd(sum,50)constsum3=awaitadd(sum2,3)returnsum3//sumからsum3まで順番に実行される。ネストされず非同期処理を連続させられる}doWork().then((result)=>{console.log('result',result)}).catch((e)=>{console.log('e',e)})
awaitを使うメリット

①ネストさせずに非同期処理を連続で記述することができる

②非同期処理の連続の中で、エラーになったものが一つでもでたら、次の非同期処理に移らずに処理を終了してくれる

参考文献

「The complete Node.js Developer Course」
https://www.udemy.com/share/101WGiAEIedVpTTX4D/


Viewing all articles
Browse latest Browse all 9055

Latest Images

Trending Articles