Предупреждение о необработанном обещании: Отклоните необработанное обещание при обработке определенных случаев с вопросом

#javascript

Вопрос:

У меня есть этот вопрос, который касается нескольких случаев:

 Your function must always return a promise
If data is not a number, return a promise rejected instantly and give the data "error" (in a string)
If data is an odd number, return a promise resolved 1 second later and give the data "odd" (in a string)
If data is an even number, return a promise rejected 2 seconds later and give the data "even" (in a string)
 

Я набрал код для вопроса, но получил эту ошибку:

 (node:6) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReferenceError: data is not defined
(node:6) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
 

Это и есть код:

 const job = new Promise((resolve, reject)=>{
    if(isNaN(data)){
        reject('erroe')
    }
    else if(isNaN(data) amp;amp; data%2!=0){
        setTimeout(function(){
            resolve('odd')
        } , 1000)
    }
    else {
        setTimeout(function(){
            reject('even')
        }, 2000)
    }
})


module.exports = job;
 

Комментарии:

1. Второе, если похоже, что в нем отсутствует отрицание перед первым предложением

Ответ №1:

Вот что вы можете сделать в сжатой форме:

 const job = data => new Promise((resolve, reject) =>
  typeof(data) === "number" 
  ? setTimeout(() => resolve(data % 2 ? 'odd' : 'even'), 1000) 
  : reject("error"))

job("s")
  .then(result => console.log(result))
  .catch(error => console.log(error));
job(5)
  .then(result => console.log(result))
  .catch(error => console.log(error))
job(2)
  .then(result => console.log(result))
  .catch(error => console.log(error))