Как я могу обработать ошибку на этой nodejs функции обещания - PullRequest
0 голосов
/ 10 марта 2020

Как я могу обработать ошибку в этой nodejs функции обещания Я новичок в обещании. Я попробовал все, но я не могу справиться с этим. Я хочу, чтобы если генерировать функцию fini sh res.send хорошо, если есть ошибка Res отправить ошибку. Я попытался наконец, поймать, попробовать поймать блоки ничего не работает.

мой код:

exports.gameCreatePost = function (req, res) {


    function shuffleArray(array) {
        for (var i = array.length - 1; i > 0; i--) {
            var j = Math.floor(Math.random() * (i + 1));
            var temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
        return array
    }
    var code;
    generate(8, 10).then(function (ok) {
        console.log(ok)
        code = ok;
        var chance = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        chance = shuffleArray(chance);
        Game.create({
            username: req.body.username,
            code: code,
            gameChance: chance,
            opened: 0,
            log: [],
            total: 0,
            status: 0,
            creator: req.user.username
        }, function (err, created) {
            if (err) {
                console.log(err)
            } else {
                res.send('ok')
            }
        });
    },function(err) {
        res.send('error')
    });

}

function generate(count, retry) {
    return new Promise(function (resolve, reject) {
        var _sym = 'A';
        var str = '';
        for (var i = 0; i < count; i++) {
            str += _sym[parseInt(Math.random() * (_sym.length))];
        }
        const control =  Game.findOne({
            code: str
        })
        if (retry <= 0) {
            reject('Code Not Generated')
        } else if (control) {
            console.log('inside')
            generate(count, retry - 1)
        } else {
            resolve(str);
        }
    }).catch(function (err) {
        console.log(err);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...