亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - node中Promise也被嵌套了

瀏覽:176日期:2023-09-06 08:48:25

問題描述

1.

假如有兩個(gè)mongodb集合,一個(gè)是users,一個(gè)是posts,在posts列表中展示對(duì)應(yīng)的users信息,常規(guī)異步處理嵌套太多.就使用Promise來解決,發(fā)現(xiàn),promise解決時(shí)也有一個(gè)問題.

2. 解決代碼如下

//封裝查詢一條函數(shù)findOneData = function(db, colName, data) { return new Promise(function(reslove, reject) {db.collection(colName).find(data).toArray(function(err, data) { if (err) {console.log('數(shù)據(jù)查詢錯(cuò)誤' + err);reject(err);return; } reslove({ db: db, data: data });}); });};db_conn() .then(function(db) {return findOneData(db, 'test', {}); }) .then(function(data) {console.log(data); });

這樣的方法是否正確?貌似是解決了,但是總感覺哪里不對(duì),,,

問題解答

回答1:

promise不是最終解決方案也不見得比回調(diào)優(yōu)雅多少 async/await才是

回答2:

有三點(diǎn),直接把上面的代碼寫在db_conn的then里面,然后返回this.在最外層統(tǒng)一使用catch捕捉異常。將console.log給刪了,看起來怪怪的,

回答3:

db_conn().then(db=>{return { db:db, test:’test’, data:{} }}).then(findOneData).then(r=>{ console.log(r);});

最后把你的findOneData改一下接收參數(shù)的方式,是不是好點(diǎn)了?

回答4:

db_conn() .then(db => findOneData(db, 'test', {})) .then(data => console.log(data));

這樣看起來是不是要順眼些?

(async function() { const db = await db_conn(); const data = await findOneData(db, 'test', {}); console.log(data);})();

這樣是不是更順眼些?

回答5:

Promise 方案是在不增加語言元素的基礎(chǔ)上解決異步回調(diào)的問題,所以必然存在一些局限性。

在原有的回調(diào)之上,Promise 至少會(huì)增加一層回調(diào),所以在原回調(diào)鏈很短的情況下,比如題主的情況,只有一層,看起來用 Promise 似乎并無優(yōu)勢(shì),這也是正常的。

如果遇到更復(fù)雜的情況,更多層次的嵌套,就能看出用 Promise 的價(jià)值了。

樓上各位都提供了很好的寫法,我就不多說了。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 国产成人久久精品 | 99国产精品九九视频免费看 | 免费高清精品国偷自产在线 | 久久精品在线观看 | 免费黄在线观看 | 亚洲爽视频 | 亚洲黄色高清视频 | 亚洲草逼视频 | 久久综合免费视频 | 久久91精品国产91久久跳舞 | 国产手机在线αⅴ片无码观看 | 黄色一级视频播放 | 久草免费网站 | 国内精品福利在线视频 | 国产亚洲精品日韩综合网 | 精品视频在线免费看 | 一区二区高清在线观看 | 东京不太热视频高清在线 | 中文字幕日韩精品中文区 | 欧美一级毛片久久精品 | 亚洲欧美日韩高清一区二区三区 | 91官网 | 国产高清在线视频伊甸园 | 中文字幕欧美日韩在线不卡 | 免费一级毛片在线播放欧美 | 91热爆国产露脸 | 久久中文视频 | 国产自线一二三四2021 | 日韩精品免费一级视频 | 久久97久久99久久综合 | 我要看欧美一级毛片 | 草草在线观看视频 | 国产主播一区二区 | 久久精品免费一区二区三区 | 性网站在线 | 成人三级在线 | 欧美美女一区二区三区 | 日本黄色大片在线观看 | 久久日本精品一区二区免费 | 欧美a级v片在线观看一区 | 久久免费激情视频 |