中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

NodeJs異步編程的含義是什么

本文小編為大家詳細介紹“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循環無論執行多久,下面代碼都要等待它執行完畢后才會執行。

2.為什么有異步編程

nodejs 特點是單線程、異步、非阻塞,如果代碼邏輯涉及到多個回調,就會出現非常可怕的代碼,不利于后期的維護。

而異步編程的作用就是提高效率,現在對程序越來越大,CPU和內存對壓力也越來越大,異步可以讓電腦同時處理多個事務,所以需要異步編程。

3.如何處理異步編程出現的問題

在我們項目當中,會出現一些問題,比如,拿不到值,是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]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設
主站蜘蛛池模板: 在线免费看一级片 | 久久免费精品一区二区 | 久久精品国产只有精品2020 | 久久久精品久久视频只有精品 | 免费a级毛片网站 | 成人满18在线观看网站免费 | 宫女淫春3在线观 | 欧美性色黄大片在线观看 | 青青草国产免费国产是公开 | 美女网站视频黄色 | 国产成人夜间影院在线观看 | 亚洲精品视频免费在线观看 | 国产大乳孕妇喷奶水在线观看 | 黑人一级大毛片 | 久久久毛片 | 午夜三级网 | 毛片基地免费视频a | 怡红院在线观看视频 | 亚洲精品一区二区久久这里 | 成人免费影视网站 | 国产香蕉成人综合精品视频 | 精品三级内地国产在线观看 | 欧美午夜a级精美理论片 | 日韩一区国产二区欧美三区 | 日韩国产成人精品视频 | 国产精品免费一区二区三区四区 | 亚洲国产成人久久综合一区77 | 京野结衣免费一区二区 | 国产男女猛烈无遮档免费视频网站 | 波多野结衣视频在线观看地址免费 | 亚洲视频一区二区在线观看 | 免费国产一级 | 亚洲一区不卡 | 欧美日韩精彩视频 | a级成人毛片久久 | 精品爱爱| 亚洲性xx| 国产永久高清免费动作片www | 国产一区二区免费在线观看 | 欧美一级片 在线播放 | 国产成人精品一区二区三区 |