第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在函數(shù)中拒絕不返回錯(cuò)誤

在函數(shù)中拒絕不返回錯(cuò)誤

梵蒂岡之花 2021-12-02 17:03:21
在這個(gè)挑戰(zhàn)中,使用 Javascript Promises 來(lái)計(jì)算各種幾何形狀的面積。形狀有正方形、長(zhǎng)方形、圓形和三角形,每個(gè)形狀的面積都可以使用以下公式計(jì)算:邊'a'的正方形:面積=a2長(zhǎng)'l'寬'w'的矩形:面積= wx lCircle of radius 'r': 面積 = Pi x r2 底邊 'b' 和高度 'h' 的三角形:面積 = 0.5 xbx h 注意:確保使用 Pi 的值為 3.14 并將所有形狀的面積四舍五入到小數(shù)點(diǎn)后兩位。函數(shù)描述完成函數(shù)getAreas,它接受一個(gè)形狀數(shù)組及其各自的邊,并返回一個(gè)代表所有形狀的區(qū)域數(shù)組的promise。另外,完成輔助函數(shù)calculateArea,它采用單個(gè)形狀及其邊/邊,并返回一個(gè)代表其面積的promise。getAreas 返回的promise 的規(guī)范如下:該promise 合并了calculateArea 返回的所有promise 的輸出形狀。由calculateArea返回的promise的規(guī)范如下:如果傳遞給Promise的shape有效,則用各自shape的計(jì)算面積來(lái)解析。如果傳遞給Promise的shape無(wú)效,則用[-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)    })}以上是我嘗試過(guò)的,但是當(dāng)出現(xiàn)奇怪的形狀 tp [-1] 時(shí),它不會(huì)拒絕areas_array
查看完整描述

1 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊

resolve(areas_array)將把承諾解析為一個(gè)空數(shù)組,因?yàn)檫€沒(méi)有then執(zhí)行任何回調(diào)。


所以首先生成一個(gè) promise 數(shù)組(每一個(gè)都是通過(guò)調(diào)用 獲得的calculateArea),然后調(diào)用Promise.all:


let getAreas = (shapes, values_arr) => {

    return Promise.all(shapes.map((shape, i) => calculateArea(shape, values_arr[i])))

        .catch(() => [-1]);

}

您應(yīng)該在這個(gè)級(jí)別下決心[-1],而不是在calculateArea. 在那里你可以使用reject()和傳遞你喜歡的任何東西。它沒(méi)有被使用。


旁注:當(dāng)你有一個(gè)(或多個(gè))承諾時(shí),就像你從調(diào)用中得到的一樣calculateArea,沒(méi)有必要?jiǎng)?chuàng)建另一個(gè)new Promise依賴于這些承諾的承諾。這樣做是一種反模式


演示:


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();

         }

    });

}


// Complete the generateArea function below.

// It returns a Promise which on success, 

//   resolves to an array of areas of all the shapes and on failure, resolves to [-1].

let getAreas = (shapes, values_arr) => {

    return Promise.all(shapes.map((shape, i) => calculateArea(shape, values_arr[i])))

        .catch(() => [-1]);

}


getAreas(['square', 'circle'], [[10], [5]]).then(console.log);


還有一個(gè)注意術(shù)語(yǔ):我更改了代碼中的注釋,因?yàn)檎f(shuō)Promise 在成功時(shí)返回某些內(nèi)容是一種誤導(dǎo):promise 不是函數(shù),因此它不返回任何內(nèi)容。你可以說(shuō)它解決了某些事情。


查看完整回答
反對(duì) 回復(fù) 2021-12-02
  • 1 回答
  • 0 關(guān)注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)