在这个挑战中,使用 Javascript Promises 来计算各种几何形状的面积。形状有正方形、长方形、圆形和三角形,每个形状的面积都可以使用以下公式计算:边'a'的正方形:面积=a2长'l'宽'w'的矩形:面积= wx lCircle of radius 'r': 面积 = Pi x r2 底边 'b' 和高度 'h' 的三角形:面积 = 0.5 xbx h 注意:确保使用 Pi 的值为 3.14 并将所有形状的面积四舍五入到小数点后两位。
函数描述完成函数getAreas,它接受一个形状数组及其各自的边,并返回一个代表所有形状的区域数组的promise。另外,完成辅助函数calculateArea,它采用单个形状及其边/边,并返回一个代表其面积的promise。getAreas 返回的promise 的规范如下:该promise 合并了calculateArea 返回的所有promise 的输出形状。由calculateArea返回的promise的规范如下:如果传递给Promise的shape有效,则用各自shape的计算面积来解析。如果传递给Promise的shape无效,则用[-1]拒绝一切.
It returns a Promise which on success, returns area of the shape, and on failure returns [-1].
let calculateArea = (shape, values) => {
return new Promise((resolve, reject) => {
switch(shape) {
case 'square':
resolve(values[0]*values[0]);
break;
case 'rectangle':
resolve(values[0] * values[1]);
break;
case 'circle':
resolve(values[0]*values[0] * 3.14);
break;
case 'triangle':
resolve(0.5 * values[0]*values[1]);
break;
default:
reject( [-1]);
}
})
}
// Complete the generateArea function below.
// It returns a Promise which on success, returns an array of areas of all the shapes and on failure, returns [-1].
let getAreas = (shapes, values_arr) => {
return new Promise((resolve, reject) => {
let areas_array = [];
for(let i= 0; i < shapes.length; i++) {
calculateArea(shapes[i], values_arr[i])
.then(area => {
areas_array.push(area);
})
.catch(error => {
console.log(error)
})
}
resolve(areas_array)
})
}
以上是我尝试过的,但是当出现奇怪的形状 tp [-1] 时,它不会拒绝areas_array
茅侃侃
相关分类