第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

異步、瀑布問題

異步、瀑布問題

www說 2022-08-27 09:43:51
在這里,我正在嘗試檢索所有對象并將它們推送到文件中。由于某種原因,當一條記錄應(yīng)包含更多對象時,只有一條記錄被推送到文件中。甚至在執(zhí)行之前就發(fā)送了響應(yīng)。你能幫我解決這個問題,或者讓我知道我哪里錯了嗎?這是我的代碼:jsonexports.createjoson = (req, res) => {  const Responsearray = [];  async.waterfall(    [      function(waterfallCb) {        //  ... first function      },      function(results, waterfallCb1) {        //second function        async.eachLimit(          results,          100,          function(singleResult, eachCallback) {            async.waterfall(              [                async function(innerWaterfallCb) {                  try {                    NewsModel.find(                      { _id: singleResult.newsId }, // #individual article                      async (err, newsResult) => {                        if (err) {                          return innerWaterfallCb(                            // #displaying error                            "error in fetching news data"                          );                        }                        const map = new Map();                        for (const item of newsResult) {                          if (!map.has(item.source)) {                            map.set(item.source, true);                            Response = {                              newsId: item._id,                              title: item.title,                              comment: singleResult.comment                            };                          }                        }                        resPond = await Response;                        Responsearray.push(resPond);                        let data = JSON.stringify(Responsearray);                        await fs.writeFileSync("abc.json", data);                      }                    );                  } catch (error) {                    innerWaterfallCb(error);                  }                }              ],        
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻1809條經(jīng)驗 獲得超8個贊

該代碼存在許多問題:

  1. fs.writeFileSync將覆蓋文件,而不是附加到該文件,因此只有您寫入的最后一個數(shù)據(jù)才會在 .此外,它不會返回 a,因此無需在其上使用。它同步運行,因此在完成之前不會返回(這就是其函數(shù)名稱中的含義)。若要追加而不是覆蓋文件,可以將標志選項設(shè)置為“a”以追加(默認值為“w”)。abc.jsonPromiseawaitSync

  2. 似乎沒有調(diào)用返回任何地方 - 僅在錯誤情況下。內(nèi)部瀑布函數(shù)不應(yīng)該被標記,因為它不需要真正做任何調(diào)用。但是您應(yīng)該在寫入文件后調(diào)用。innerWaterfallCb(null)asyncawaitreturn innerWaterfallCb(null)

  3. 最好只是在外部瀑布的末尾收集數(shù)據(jù)并寫入文件一次,而不是在內(nèi)部瀑布的深處重復(fù)寫入文件。responseArray

  4. 變量應(yīng)以小寫字母開頭(例如,因為大寫的首字母通常表示類或模塊。responseArrayResponseArray

  5. 不要與異步模塊(瀑布和每個Limit)混合使用。如果您使用的是正確的 Promises,那么就沒有必要使用異步模塊。完全刪除的使用并重寫以正確使用對象會更干凈。async/awaitasync/awaitwaterfallPromise


查看完整回答
反對 回復(fù) 2022-08-27
  • 1 回答
  • 0 關(guān)注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號