JavaScript の約束に関する面接での 9 つの質問を共有する

青灯夜游
リリース: 2020-07-13 16:33:45
転載
4901 人が閲覧しました

JavaScript の約束に関する面接での 9 つの質問を共有する

#次の 9 つの質問に答えてください

1. 複数の.catch

var p = new Promise((resolve, reject) => { reject(Error('The Fails!')) }) p.catch(error => console.log(error.message)) p.catch(error => console.log(error.message))
ログイン後にコピー
上記のコードの出力は何でしょうか?正しい答えを選択してください:

    [ ] メッセージを 1 回印刷します
  • [x] メッセージを 2 回印刷します
  • [ ]
  • UnhandledPromiseRejectionWarning
  • [ ] プログラムの終了

分析:

コンストラクター メソッドを使用して Promise を作成し、

reject## を渡します。 # callback エラーはすぐにトリガーされます。次に、

.catch

は、DOM の.addEventListener(event, callback)または Event Emitter の.on(event, callback)と同様に機能します。は複数のコールバックを追加できます。それぞれは同じパラメータで呼び出されます。

2. 複数の.catch##

var p = new Promise((resolve, reject) => { return Promise.reject(Error('The Fails!')) }) p.catch(error => console.log(error.message)) p.catch(error => console.log(error.message))
ログイン後にコピー
上記のコードの出力は次のようになります。 ?正しい答えを選択してください:

[ ] メッセージを 1 回印刷します

    [ ] メッセージを 2 回印刷します
  • [x]
  • UnhandledPromiseRejectionWarning
  • [ ] プログラムの終了
  • 分析:

Promise コンストラクターを使用する場合は、次を呼び出す必要があります。JavaScript の約束に関する面接での 9 つの質問を共有するresolve()

または

reject()コールバック。 Promise コンストラクターは戻り値を使用しないため、Promise.reject()によって作成された他の Promise は実際には受信されません。Promise.reject()の後に

.catch

がない場合、答えはUnhandledPromiseRejectionWarningです。3.

.then.catch

var p = new Promise((resolve, reject) => { reject(Error('The Fails!')) }) .catch(error => console.log(error)) .then(error => console.log(error))
ログイン後にコピー
## をリンクします。 #上記のコードの出力は何になりますか?正しい答えを選択してください:[x] はエラーを出力し、

unknown

    [ ] はエラーを 2 回出力します
  • [ ]UnhandledPromiseRejectionWarning
  • [ ]
  • 未定義
  • 解析

##.then

.catchJavaScript の約束に関する面接での 9 つの質問を共有するをチェーンする場合、これらを一連のステップとして考えると役立ちます。各

.then

は、前の.thenによって返された値を引数として受け取ります。ただし、「ステップ」でエラーが発生した場合、.catchが見つかるまで、後続の.then「ステップ」はスキップされます。エラーをオーバーライドしたい場合は、エラーではない値を返すだけで済みます。後続の.thenを介してアクセスできます。ヒント:console.log()は常に

unknown

を返します。4. Link

.catch

##

var p = new Promise((resolve, reject) => { reject(Error('The Fails!')) }) .catch(error => console.log(error.message)) .catch(error => console.log(error.message))
ログイン後にコピー
上記のコードの出力は何になりますか? ?正しい答えを選択してください: #[x] エラー メッセージを 1 回出力します。[ ] エラー メッセージを 2 回出力します。

[ ] UnhandledPromiseRejectionWarning

[ ] プログラム終了
  • 解析
  • .catch
  • を連鎖する場合、それぞれは前の
.then# のみを処理します # # または

`.catch「ステップ」でエラーが発生しました。この例では、最初の.catch

console.logを返します。これは、2 つの.catchの後に.then() を追加することによってのみ実現できます。ぜひお越しください。5. 複数の.catch

##
new Promise((resolve, reject) => { resolve('Success!') }) .then(() => { throw Error('Oh noes!') }) .catch(error => { return "actually, that worked" }) .catch(error => console.log(error.message))
ログイン後にコピー

上記のコードの出力は次のようになります。 ?正しい答えを選択してください:[ ] メッセージを 1 回印刷します[ ] メッセージを 2 回印刷します[ ] UnhandledPromiseRejectionWarning

[x ] 何も出力しません

  • 解析
  • ヒント:
  • .catch
  • は、通常の値を返すだけで実行できます。エラーを無視 (または上書き) します。

このトリックは、後続の.thenが値を受け取った場合にのみ機能します。

6.

.then

Promise.resolve('Success!') .then(data => { return data.toUpperCase() }) .then(data => { console.log(data) })
ログイン後にコピー

間のプロセス上記のコードの出力どうなるでしょうか?正しい答えを選択してください:[ ] print "Success!" および "SUCCESS!"[ ] print "Success!"[x] print "SUCCESS!"

[ ] 何も出力しません

  • 解析
  • ヒント: .then は、次から順にデータを渡します。
  • 戻り値
  • 次の
  • .then(value => /* ハンドル値 */)

次の.thenに値を渡すには、

return

がキーになります。7.

.then

Promise.resolve('Success!') .then(data => { return data.toUpperCase() }) .then(data => { console.log(data) return data }) .then(console.log)
ログイン後にコピー

間のプロセス上記のコードの出力どうなるでしょうか?正しい答えを選択してください:

  • [ ] 打印 "SUCCESS!"
  • [ ] 打印 "Success!"
  • [x] 打印 "SUCCESS!" 和 "SUCCESS!"
  • [ ] 不打印任何内容

解析:

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

8..then之间的流程

Promise.resolve('Success!') .then(data => { data.toUpperCase() }) .then(data => { console.log(data) })
ログイン後にコピー

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

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

解析:

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

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

9..then.catch之间的流程

Promise.resolve('Success!') .then(() => { throw Error('Oh noes!') }) .catch(error => { return 'actually, that worked' }) .then(data => { throw Error('The fails!') }) .catch(error => console.log(error.message))
ログイン後にコピー

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

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

解析:

JavaScript の約束に関する面接での 9 つの質問を共有する

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

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

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

以上がJavaScript の約束に関する面接での 9 つの質問を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!