(узел: 2256) UnhandledPromiseRejectionWarning: необработанное отклонение обещания - PullRequest
0 голосов
/ 03 августа 2020

Хочу сделать мозгового бота whatapp nodejs. И я хочу добавить аргумент. мой код выглядит следующим образом:

                case 'brainly':
                const args = process.argv
                    brainly(args).then(res => {
                        for(var i=0; i<res.length; i++){
                        var jawab = res[i].jawaban
                        client.sendText(from, jawab[0].text)
                        }
                    })
                break

Но когда я запускаю, он показывает такую ​​ошибку:

(узел: 7960) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за выброса внутри функции asyn c без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().

как это исправить? Пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 03 августа 2020

Это означает, что где-то в асинхронном контексте, скорее всего внутри обещания, созданного вызовом brainly(args), произошла ошибка, и она не была обнаружена и обработана.

Чтобы начать работу с асинхронным Javascript, я рекомендую найти несколько статей о Javascript Promises и Asyn c функциях (которые неявно генерируют обещания и допускают синтаксис await).

Нет очень простой способ объяснить. Javascript - однопоточный язык, но он предлагает отличный параллелизм за счет использования обратных вызовов, обещаний и синтаксиса async / await (все они как бы происходят из обратных вызовов). Все, что не происходит мгновенно, например операции сети / диска, является асинхронным и должно обрабатываться соответствующим образом. Это может сбивать с толку новичков, так как разбивает линейный асинхронный поток выполнения.

Обещания - это объекты, которые могут быть созданы, которые будут либо разрешать , либо отклонить в будущем. Вызывая .then в обещании, вы даете ему функцию обратного вызова , которая будет вызываться с разрешенным значением, когда оно в конечном итоге появится. Вы также должны добавить в конец обработчик .catch(err => { ... }) для обработки ошибок, которые, вероятно, возникли по какой-то причине в результате переданных вами аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...