在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ node接口里使用promise疑問(wèn)?

node接口里使用promise疑問(wèn)?

promsie解決了異步回調(diào)嵌套問(wèn)題,但是使用promsie會(huì)不會(huì)造成阻塞?
接口異步寫法:

app.use('/test',function(req,res){
 fn() 
}

fn是一個(gè)異步查詢數(shù)據(jù)庫(kù)函數(shù),由于fn是異步,代碼不會(huì)再這里等待,假如同時(shí)多個(gè)請(qǐng)求,下一個(gè)請(qǐng)求不會(huì)等待fn執(zhí)行完才接入執(zhí)行,node可以快速接入多個(gè)請(qǐng)求.
用async寫接口:

app.use('/test',function(req,res){
   async fn(){
   let res=await fn1()
   let res1=await fn2(res)
   res.send(res1)
   }
fn()
}

此時(shí)fn變?yōu)橥?下一個(gè)請(qǐng)求必須等待上一個(gè)請(qǐng)求處理完才接入,如果請(qǐng)求多的話,是否會(huì)造成阻塞,導(dǎo)致靠后的請(qǐng)求等待時(shí)間很長(zhǎng)?目前很多都是使用promsie來(lái)寫封裝接口,會(huì)不會(huì)造成以上問(wèn)題?還是我理解錯(cuò)誤?

回答
編輯回答
祈歡

阻塞是不可能的,這輩子都不可能的。
直觀上的async/await阻塞只是因?yàn)榛卣{(diào)還沒(méi)有執(zhí)行,而沒(méi)有執(zhí)行回調(diào),后續(xù)的res.send也不會(huì)執(zhí)行,導(dǎo)致這個(gè)請(qǐng)求一直沒(méi)有響應(yīng)。

await、async只是用來(lái)幫助你更好地處理Promise罷了,CPU并不會(huì)一直在這一個(gè)請(qǐng)求上等著await后邊的Promise改變狀態(tài)。
而是先去做其他的事情了,這里就涉及到了那個(gè)EventLoop。

async await依然是異步、異步、異步。只是看起來(lái)像同步罷了

正好前幾天寫了一篇,可以稍微看下了解一下:https://segmentfault.com/a/11...

2018年2月17日 20:10