亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

JavaScript 忽略將對象添加到數組

JavaScript 忽略將對象添加到數組

呼啦一陣風 2023-03-03 15:23:53
function setUsersDefinitions(data, userID){    let users = new Array();    return new Promise((resolve)=>{        data.forEach(el => {            if (el.id_adder === userID) {                getUserName(el.id_added).then(u => {                    users.push({                        username: u,                        locked: el.locked !== null,                        canUnlock: el.locked === userID,                        id: el.id_added                    })                }).catch(e=>{                    console.log(e);                })            } else {                getUserName(el.id_adder).then(u=>{                    users.push({                        username: u,                        locked: el.locked !== null,                        canUnlock: el.locked === userID,                        id: el.id_adder                    })                }).catch(e=>{                    console.log(e);                })            }        })        resolve(users);    })}問題是,當我嘗試對生成的項目執行 console.log 時,它可以工作,但是當它調用 Array.push 方法時,它會忽略該命令。我究竟做錯了什么?提前致謝。
查看完整描述

1 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

所有這些都應該使用 async/await 來完成,而不是將所有內容都包裝在一個中Promise——這將極大地簡化您的代碼:


async function setUsersDefinitions(data, userID){

    let users = new Array();

    for(var i=0;i<data.length;i++){

        var el = data[i];

        var id = (el.id_adder === userID) ? el.id_added : el.id_adder;

        var u = await getUserName(id);

        users.push({

                     username: u,

                     locked: el.locked !== null,

                     canUnlock: el.locked === userID,

                     id: id

                  });

    }

    return users;

}

(注意:為簡潔起見省略了錯誤處理)


然后你應該await在任何地方調用這個函數(它本身必須在一個async函數中):


async function doWork(){

    var users = await setUsersDefinitions(some_data, some_userID);

    console.log(users);

}


查看完整回答
反對 回復 2023-03-03
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號