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

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

nodejs 承諾給出未處理的承諾拒絕,這似乎得到了正確的處理

nodejs 承諾給出未處理的承諾拒絕,這似乎得到了正確的處理

www說 2023-05-19 14:58:57
問題是我收到 UNhandledPromiseRejection 錯誤,盡管我認為我已經處理了所有情況。代碼從 profileRoutes 流向 Controller,再到錯誤首先出現的 Utils。在 profileRoutes.js 里面router.get('/:username', async (r, s) => {    try{        let profileData = await getProfileData(r.params.username);        s.json({ success: true, payload: profileData });    }catch(err){        console.log('ending request processing by responding a error');        s.status(500).json({ success: false, message: 'err[0].message' });    }});在 controllers/index.js 里面const fetchQueue = [getUserRepos];async function getProfileData(username) {    let profileData = {};    try{        let results = await Promise.all(fetchQueue.map(item => item(username)));        for (let i = 0; i < results.length; i++) {            profileData[getKeys[i]] = results[i];        }        return profileData;    }catch(err){        console.log('error log in controller/index getProfileData function');        throw err;    }}const getUserRepos = async (username) => {        try {        // const res = await utils.gqlSender(username, 'userRepos', { createdAt });        const res = await utils.gqlSender(username, 'userReposData');        return res.user.repositories;    } catch (err) {        console.log('error log in controller/index getUserRepos function');        throw err;    }};在 utils/index.js 里面const gqlSender = async (username, type, opt = {}) => {        axios.post('', {        query: gqlQuery(username, type, opt) // generates a needed graphQL query    }).then(res => {        if(res.data.errors) {  // this is where the error is recieved and so i reject promise.                                 console.log('bef@@@re');             return Promise.reject (res.data.errors);        }        console.log('###',res.data);        return res.data;    }).catch(err => {        console.log('error in making axios request inside utils/index gqlSender function');        throw err;        // return Promise.reject(err);    });我不認為我錯過了任何承諾拒絕。任何幫助表示贊賞。謝謝。
查看完整描述

1 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您的gqlSender功能不會return拒絕將被拒絕的承諾,因此不會在任何地方處理。你應該寫


const gqlSender = (username, type, opt = {}) => {

    return axios.post('', {

//  ^^^^^^

        query: gqlQuery(username, type, opt) // generates a needed graphQL query

    }).then(res => {

        if (res.data.errors) {

            console.log('error in making axios request inside utils/index gqlSender function');

            throw res.data.errors;

        } else {

            console.log('###',res.data);

            return res.data;

         }

    });

};

或者


const gqlSender = async (username, type, opt = {}) => {

//                ^^^^^

    const res = await axios.post('', {

        query: gqlQuery(username, type, opt) // generates a needed graphQL query

    });

    if (res.data.errors) {

        console.log('error in making axios request inside utils/index gqlSender function');

        throw res.data.errors;

    } else {

        console.log('###',res.data);

        return res.data;

     }

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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