首頁 web前端 js教程 分享 9 個關於JavaScript Promises的面試題

分享 9 個關於JavaScript Promises的面試題

Jul 13, 2020 pm 04:33 PM
javascript

分享 9 個關於JavaScript Promises的面試題

請完成以下9個問題

1. 多個<span style="font-size: 18px;">.catch</span>

1

2

3

4

5

var p = new Promise((resolve, reject) =&gt; {

  reject(Error('The Fails!'))

})

p.catch(error =&gt; console.log(error.message))

p.catch(error =&gt; console.log(error.message))

登入後複製

以上程式碼的輸出會是什麼?請選擇正確的答案:

  • [ ] 列印一次訊息
  • [x] 列印兩次訊息
  • [ ] UnhandledPromiseRejectionWarning
  • [ ] 程式退出

解析:

我們使用建構函式方法建立一個Promise,並透過reject 回調立即觸發錯誤。

然後.catch 運作方式類似於DOM 的.addEventListener(event,callback) 或Event Emitter 的.on(event,callback),其中可以新增多個回調。 每個都用同樣的參數來呼叫。

2. 多個.catch

1

2

3

4

5

var p = new Promise((resolve, reject) =&gt; {

  return Promise.reject(Error('The Fails!'))

})

p.catch(error =&gt; console.log(error.message))

p.catch(error =&gt; console.log(error.message))

登入後複製

以上程式碼的輸出將會是什麼?請選擇正確的答案:

  • [ ] 列印一次訊息
  • [ ] 列印兩次訊息
  • [x] UnhandledPromiseRejectionWarning
  • [ ] 程式退出

解析:

分享 9 個關於JavaScript Promises的面試題

#使用Promise 建構函式時,必須呼叫resolve()reject() 回呼。 Promise 建構子不會使用你的回傳值,因此實際上不會再收到由 Promise.reject() 建立的其他 Promise。

Promise.reject() 之後沒有 .catch 時,答案是 UnhandledPromiseRejectionWarning#。

3. 連結.then.catch##

1

2

3

4

5

var p = new Promise((resolve, reject) =&gt; {

    reject(Error('The Fails!'))

  })

  .catch(error =&gt; console.log(error))

  .then(error =&gt; console.log(error))

登入後複製
以上程式碼的輸出將會是什麼?請選擇正確的答案:

    [x] 列印錯誤和
  • undefined
  • [ ] 列印兩次錯誤
  • [ ]
  • UnhandledPromiseRejectionWarning
  • [ ]
  • undefined
##解析

分享 9 個關於JavaScript Promises的面試題

# #當連結.then.catch 時,將它們視為一系列步驟會很有幫助。每個 .then 都接收前一個

.then

傳回的值作為其參數。但是,如果你的 “step” 遇到錯誤,則任何後續的

.then
    “ steps” 都會被跳過,直到遇到
  • .catch
  • 。如果要覆蓋錯誤,你要做的就是回傳一個非錯誤值。可以透過任何隨後的
  • .then
  • 存取。
  • 提示:
console.log()

總是回傳 undefined

4. 連結.catch<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var p = new Promise((resolve, reject) =&amp;gt; {     reject(Error('The Fails!'))   })   .catch(error =&amp;gt; console.log(error.message))   .catch(error =&amp;gt; console.log(error.message))</pre><div class="contentsignin">登入後複製</div></div>以上程式碼的輸出將會是什麼?請選擇正確的答案:[x] 列印一次錯誤訊息

[ ] 列印兩次錯誤訊息

[ ] UnhandledPromiseRejectionWarning [ ] 程式退出解析

當連結

.catch
    時,每個只處理先前的
  • .then
  • `.catch
  • “步驟” 中引發的錯誤。在此例中,第一個
  • .catch
  • 傳回
  • console.log
  • ,只能透過在兩個
.catch

之後加上.then() 來訪問。

5. 多個

.catch

1

2

3

4

5

6

7

8

9

10

new Promise((resolve, reject) =&gt; {

    resolve('Success!')

  })

  .then(() =&gt; {

    throw Error('Oh noes!')

  })

  .catch(error =&gt; {

    return "actually, that worked"

  })

  .catch(error =&gt; console.log(error.message))

登入後複製

以上程式碼的輸出將會是什麼?請選擇正確的答案:[ ] 列印一次訊息[ ] 列印兩次訊息[ ] UnhandledPromiseRejectionWarning

#[x]不列印任何內容

  • 解析
  • 提示:
  • .catch
  • 可以簡單地透過傳回一個常規值來忽略(或覆蓋)錯誤。

該技巧僅在隨後的 .then 接收該值時有效。

6.

.then

之間的流程<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Promise.resolve('Success!')   .then(data =&amp;gt; {     return data.toUpperCase()   })   .then(data =&amp;gt; {     console.log(data)   })</pre><div class="contentsignin">登入後複製</div></div>以上程式碼的輸出將會是什麼?請選擇正確的答案:

[ ] 列印"Success!" 和"SUCCESS!"[ ] 列印"Success!"[x] 列印"SUCCESS!"[ ] 不列印任何內容

解析#########提示:.then依序傳遞數據,從### return value### 到下一個### .then(value => /* handle 值 */)###。 ######為了將值傳遞給下一個 ###.then###,###return### 是關鍵。 ############7. #########.then### 之間的流程#########

1

2

3

4

5

6

7

8

9

Promise.resolve('Success!')

  .then(data =&gt; {

    return data.toUpperCase()

  })

  .then(data =&gt; {

    console.log(data)

    return data

  })

  .then(console.log)

登入後複製
###以上程式碼的輸出將會是什麼?請選出正確的答案:###
  • [ ] 打印 "SUCCESS!"
  • [ ] 打印 "Success!"
  • [x] 打印 "SUCCESS!" 和 "SUCCESS!"
  • [ ] 不打印任何内容

解析:

有两个 console.log 调用将被调用。

8. .then 之间的流程

1

2

3

4

5

6

7

Promise.resolve('Success!')

  .then(data =&gt; {

    data.toUpperCase()

  })

  .then(data =&gt; {

    console.log(data)

  })

登入後複製

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印 "SUCCESS!"
  • [ ] 打印 "Success!"
  • [ ] 打印 "SUCCESS!" 和 "SUCCESS!"
  • [x] 打印 undefined

解析:

提示:.then 依次传递数据,从返回值到下一个  .then(value =&gt; /* handle value */)

为了将值传递给下一个 .thenreturn 是关键。

9. .then.catch 之间的流程

1

2

3

4

5

6

7

8

9

10

11

Promise.resolve('Success!')

  .then(() =&gt; {

    throw Error('Oh noes!')

  })

  .catch(error =&gt; {

    return 'actually, that worked'

  })

  .then(data =&gt; {

    throw Error('The fails!')

  })

  .catch(error =&gt; console.log(error.message))

登入後複製

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印 "Oh noes!" 和 "The fails!"
  • [ ] 打印 "Oh noes!"”
  • [x] 打印 "The fails!"
  • [ ] 打印 "actually, that worked"
  • [ ] 不打印任何内容

解析:

分享 9 個關於JavaScript Promises的面試題

本文转载自:https://segmentfault.com/a/1190000021255822

英文原文地址: https://danlevy.net/javascript-promises-quiz/

相关教程推荐:JavaScript视频教程

以上是分享 9 個關於JavaScript Promises的面試題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript與WebSocket:打造高效率的即時天氣預報系統

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

如何在JavaScript中取得HTTP狀態碼的簡單方法

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

javascript如何使用insertBefore

See all articles