【同期処理】async/awaitできない(待ってもらえない)問題【Node.js】
3674 ワード
Node.jsが親切設計すぎて、時間がかかる処理をしている間に勝手にその後の処理に進んでしまって困りました。
そこでasync/awaitしたのですがなかなか待ってもらえず…
こちらの回答者さんの回答を拝見し、解決しました。→(https://teratail.com/questions/131373)
記録します。
できなかった時のプログラム
index.js
(略)
async function a(){
//ちょっと時間がかかる処理
return '2'
}
async function main(){
const number = await a()
console.log(number)
console.log("numberを表示した後")
}
index.js
(略)
async function a(){
//ちょっと時間がかかる処理
return '2'
}
async function main(){
const number = await a()
console.log(number)
console.log("numberを表示した後")
}
実行結果です↓
numberを表示した後
2
実行結果がかわってないー(「2→numberを表示した後」、という順番にしたい)
できた時のプログラム
index.js
(略)
//--------returnで囲っちゃった!------------
function a(){
return new Promise((resolve, reject) => {
//ちょっと時間がかかる処理
resolve('2')
}
}
async function main(){
const number = await a()
console.log(number)
console.log("numberを表示した後")
}
main()
index.js
(略)
//--------returnで囲っちゃった!------------
function a(){
return new Promise((resolve, reject) => {
//ちょっと時間がかかる処理
resolve('2')
}
}
async function main(){
const number = await a()
console.log(number)
console.log("numberを表示した後")
}
main()
実行結果です↓
2
numberを表示した後
やったー!
Author And Source
この問題について(【同期処理】async/awaitできない(待ってもらえない)問題【Node.js】), 我々は、より多くの情報をここで見つけました https://qiita.com/aomo_study/items/d8b8e9d5ea41ac16b060著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .