У меня есть программа, которая заставляет компьютер имитировать несколько дел одновременно, используя асинхронные обещания JavaScript.Я решил начать с малого и сосредоточиться на мытье посуды.По сути, в моем коде есть два файла - библиотека для возврата нового экземпляра объекта Promise
и app.js
, который вызывает эти функции с .then()
и .catch()
.
Так выглядят функции в library.js
.
let washDishes = ({soap}) => {
return new Promise ((resolve, reject) => {
setTimeout(() => {
if (soap) {
console.log('Status: Clean Dishes'.blue)
resolve('clean dishes');
}
else {
console.log('Status: Dirty Dishes'.blue);
reject('dirty dishes');
}
}, 1000)
})
};
let addSoap = () => {
return new Promise ((resolve) => {
setTimeout(() => {
console.log('Status: Soap Added'.blue)
resolve('soap added');
}, 1000)
})
};
let emptyDishwasher = () => {
return new Promise ((resolve) => {
setTimeout(() => {
console.log('Status: Dishwasher Emptied'.blue)
resolve('dishes put away')
}, 1000);
})
}
В приведенном выше сообщении я возвращаю новое обещание, регистрируя состояние и разрешая тот же текст через 1 секунду. Является ли избыточным, чтобы resolv () и console.log () - это одно и то же?Если я не войду, это не покажет, что происходит.
Это основная часть моего app.js
кода:
console.log("Doing chores...");
const cleanDishes = washDishes({soap: true})
.then(function(resolvedValue) {
emptyDishwasher(resolvedValue);
})
.catch(function(rejectedValue) {
addSoap(rejectedValue);
});
Если вы поместите здесь операторы console.log()
, вы получите консольную печать
Promise <pending>
Как мне реструктурировать мой код, чтобы остановить эту избыточность, поддерживая тот факт, что я выполняю Обещания?