我有一个程序,该程序可以使计算机使用异步JavaScript Promises一次模拟多个琐事。我决定从小处着手,专注于洗碗。基本上,我的代码有两个文件-一个用于返回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);
})
}
在上面,我返回一个新的Promise,记录状态并在1秒后解析相同的文本。 同时解决resolve()和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>
我应该如何重组我的代码以停止这种冗余,同时保持我正在实践Promises的事实?
答案 0 :(得分:2)
通过分解辅助函数中的重复部分,可以使代码更干燥:
{{1}}
答案 1 :(得分:-1)
从技术上讲,resolve()
和reject()
不需要任何参数,因为它们的值是通过字符串文字输出的。因此,
resolve('soap added')
可以成为
resolve()