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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JS - 在繼續(xù)下一部分之前未能正確解決一系列承諾

JS - 在繼續(xù)下一部分之前未能正確解決一系列承諾

肥皂起泡泡 2022-12-29 16:18:30
我一直遇到有關(guān) JS promise 使用的問題,希望這只是我遺漏了一些非常明顯的東西。本質(zhì)上,我嘗試一次讀取多個(gè) JSON 文件并將它們的內(nèi)容推送到屬于另一個(gè)對(duì)象的數(shù)組,然后對(duì)該數(shù)組上的元素執(zhí)行操作。因此,在嘗試對(duì)其進(jìn)行操作之前需要填充數(shù)組。然而,盡管我在理論上使用 promises 來(lái)確保順序是正確的,但我所寫的似乎無(wú)法做到這一點(diǎn)。我該如何解決這個(gè)問題?以下是我正在使用的代碼片段,其中出現(xiàn)了問題:這是我將提取的對(duì)象推送到我的數(shù)組的函數(shù):function pushNewRoom (ship, name_json_folder, elem, id) {  lt promiseRoom = new Promise ((resolve, reject) => {    let newRoom = gf.getJSONFile(name_json_folder + '/' + elem + ".json")        // note: getJSONFile allows me to grab a JSON object from a file      .then(        (data) => {          data.name = elem;          ship.rooms.push(data);          return data;      }).then((newRoom) => {          resolve(newRoom);      }).catch((reject) => {      // if the JSON file doesn't exist a default object is generated        let newRoom = new Room (elem, id);        ship.rooms.push(newRoom);        resolve(newRoom);      });  });  return promiseRoom;}這是調(diào)用該函數(shù)并執(zhí)行我之后需要的操作的部分:exports.generateRoomsByLayout = function (name_json_folder, ship){        ship.rooms = [];        console.log("reached step 1");        // First execution step: get a JSON file        gf.getJSONFile(name_json_folder + "/_base_layout.json")        .then(function (shipmode){        // Note: shipmode is a JSON object that acts as a blueprint for the operations to follow.        // Importantly here, it contains an array, layout, containing the names of every other JSON file I will need to perform the operations.        console.log("reached step 2");              }).catch((err) => {              });        });};這個(gè)問題就發(fā)生在 Promise.allSettled() 行。程序沒有等待 ship.layout.map() 生成的 promise,它會(huì)變成一個(gè)可迭代的數(shù)組,而是繼續(xù)執(zhí)行。我想這是因?yàn)?Promise.allSettled() 沒有等待 map() 生成數(shù)組才繼續(xù)前進(jìn),但一直無(wú)法解決問題,并且仍然懷疑這是解釋。誰(shuí)能告訴我我在這里做錯(cuò)了什么?如果我問的不清楚,請(qǐng)告訴我,我會(huì)盡力澄清。編輯:我懷疑它鏈接到 Promise.allSettled() 而不是等到 map() 填充數(shù)組以考慮數(shù)組內(nèi)的每個(gè)承諾都已解決,因?yàn)樗拈L(zhǎng)度在第 3 步似乎為 0,但我不確定。
查看完整描述

1 回答

?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

沒關(guān)系,我是個(gè)白癡。

map() 方法的回調(diào)(?)不會(huì)(顯然)返回一個(gè)對(duì)象(因此,一個(gè)承諾)如果你不告訴它。所以,

shipmode.layout.map(function (elem, index){pushNewRoom(ship, name_json_folder, elem, index);})

需要是

shipmode.layout.map(function (elem, index){return pushNewRoom(ship, name_json_folder, elem, index);})


查看完整回答
反對(duì) 回復(fù) 2022-12-29
  • 1 回答
  • 0 關(guān)注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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