本文小編為大家詳細介紹“NodeJs異步編程的含義是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“NodeJs異步編程的含義是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
成都創新互聯致力于互聯網網站建設與網站營銷,提供網站制作、成都網站建設、網站開發、seo優化、網站排名、互聯網營銷、微信小程序、公眾號商城、等建站開發,成都創新互聯網站建設策劃專家,為不同類型的客戶提供良好的互聯網應用定制解決方案,幫助客戶在新的全球化互聯網環境中保持優勢。
含義:
有異步肯定會有同步
凡是回調函數存在的,都是異步代碼
先執行同步代碼,看到異步代碼后,將異步代碼放到異步代碼執行區(先不執行)
繼續執行同步代碼,當所有的同步代碼執行結束后,在執行異步代碼
異步代碼案例:
console.log('1'); setTimeout(()=>{ console.log('2秒后再執行...'); },2000); console.log('end');
程序執行完畢后的輸出結果:
1
恩德
2秒后再執行…
總結:代碼會在執行中會依次執行,但執行到回調函數,就會把回調函數放入異步代碼執行區,先不執行,如果代碼執行完后,再去依次執行放入異步代碼執行區。
同步代碼行案例:
for(let i=0;i<10;i++){ console.log(i); } console.log('end');
程序執行完畢后的輸出結果:
0123456789
end
總結:同步代碼,for循環無論執行多久,下面代碼都要等待它執行完畢后才會執行。
nodejs 特點是單線程、異步、非阻塞,如果代碼邏輯涉及到多個回調,就會出現非常可怕的代碼,不利于后期的維護。
而異步編程的作用就是提高效率,現在對程序越來越大,CPU和內存對壓力也越來越大,異步可以讓電腦同時處理多個事務,所以需要異步編程。
在我們項目當中,會出現一些問題,比如,拿不到值,是undefined,是因為異步編程。
解決方案:回調函數嵌套、 Promise、 await、async語法糖 變成同步
現在文件夾里有1,2,3三個txt文件,我們需要讀取這三個文件,如果直接讀取第一遍可能順序對第二遍就會出現順序混亂的情況,所以我們需要處理異步的問題,讓他按順序執行
使用回調函數嵌套代碼:
const fs=require('fs') const path =require('path') let p1=path.join('1.txt') let p2=path.join('2.txt') let p3=path.join('3.txt') fs.readFile(p1,'utf8',(err,data)=>{ if(err) throw err console.log(data) fs.readFile(p2,'utf8',(err,data)=>{ if(err) throw err console.log(data) fs.readFile(p3,'utf8',(err,data)=>{ if(err) throw err console.log(data) }) }) })
使用Promise代碼:
// new promise 的作用:讓異步代碼馬上執行 const fs=require('fs') function readFile(path){ return new Promise((resolve,reject)=>{ fs.readFile(path,'utf8',(err,data)=>{ resolve(data) }) }) } let p1=readFile('1.txt') let p2=readFile('2.txt') let p3=readFile('3.txt') p1.then(result=>{ console.log(result) return p2 }).then(result=>{ console.log(result) return p3 }).then(result=>{ console.log(result) return p3 })
還可以使用 await、async語法糖 代碼:
const path=require('path') const fs=require('fs') let p1=readFile('1.txt') let p2=readFile('2.txt') let p3=readFile('3.txt') var readfile=(path)=>{ return new Promise((resolve,reject)=>{ fs.readFile(path,'utf8',(err,data)=>{ resolve(data) }) }) } async function exec() { await readfile(p1).then(result => console.log(result)) await readfile(p2).then(result => console.log(result)) await readfile(p3).then(result => console.log(result)) } exec()
讀到這里,這篇“NodeJs異步編程的含義是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注創新互聯行業資訊頻道。
文章名稱:NodeJs異步編程的含義是什么
文章位置:http://www.2m8n56k.cn/article2/ggdgic.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、關鍵詞優化、小程序開發、品牌網站建設、網站設計公司、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯