#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))