目次
1 を実装し、
1 をキャッチします。保留状態の関数は同期です。そしてすぐに実行されます
2.非同期の使用 :
2.race メソッドリクエストは同時に送信されます。最初に戻ってくるのは誰のデータを使用するかです。
[関連する推奨事項:
ホームページ ウェブフロントエンド フロントエンドQ&A Promise は es6 に基づいていますか?

Promise は es6 に基づいていますか?

Nov 03, 2022 pm 07:20 PM
es6 promise

######はい。 Promise は ECMAScript 6 の新しい参照タイプで、非同期操作の最終的な完了または失敗を表します。 Promise は、非同期プログラミングの呼び出しコードで複雑すぎるロジックを記述する問題を解決します。ネットワーク リクエストが非常に複雑な場合、コールバック地獄が発生します。このように、これらのコードを一緒に記述すると、非常に複雑に見えて読みにくくなります。 Promise を使用すると、コードがより美しくエレガントになります。

Promise は es6 に基づいていますか?このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

ECMAScript 6 では、Promises/A 仕様、つまり Promise タイプの完全なサポートが追加されています。 Promise は発売されると非常に人気があり、主要な非同期プログラミング メカニズムになりました。最新のブラウザはすべて ES6 の期待をサポートしており、他の多くのブラウザ API は期待に基づいています。

Promise は ECMAScript 6 の新しい参照タイプで、非同期操作の最終的な完了または失敗を表します。

1. Promise 関数は何をしますか?

Promise 関数は、コード ロジックを呼び出す非同期プログラミングの過度に複雑な記述の問題を解決します。複雑だとコールバック地獄が現れるので、これらのコードを一緒に書くと非常に複雑で読みにくくなりますが、promiseを使うとより美しくエレガントなコードになります。 2. Promise 3 状態

まず、開発中に非同期操作がある場合、非同期操作の Promise をラップできます

非同期操作の後に 3 つの状態が存在します
pending:等待状态,比如正在进行网络请求,或者定时器没有到时间。
fulfill:满足状态,当我们主动回调了resolve时,就处于该状态,并且会回调.then()
reject:拒绝状态,当我们主动回调了reject时,就处于该状态,并且会回调.catch()
ログイン後にコピー

3.


1 を実装し、

1 をキャッチします。保留状態の関数は同期です。そしてすぐに実行されます

2.thenとcatchは非同期です。promiseオブジェクトに非同期操作がなく、thenメソッドやcatchがすぐに実行される場合でも、ここで2つのメソッドを追加することができます。

##2. ステータスを確認する
#1. 保留ステータス処理関数で捕捉されないエラーが発生した場合、ステータスは保留中になり、直接拒否されたステータスになり、キャッチできるようになります。Capture

//参数 函数(resolve,reject)
    new Promise((resolve, reject) => {
        setTimeout(() => {
            //请求成功的时候调用resolve
            resolve('22222')
            //请求失败的时候调用reject
            reject('error message')
        }, 1000)
    }).then((data) => { //请求成功处理函数
        console.log(data)
    }).catch((err) => { //请求失败处理函数
        console.log(err)
    })
ログイン後にコピー

3.async と await

1.Use Promise:

var pro = new Promise((resolve, reject) => {
            throw new Error("123");

            // try{
            //     throw new Error("123"); 
            // } catch(e) {}

            resolve(12);
            reject(34);
        })

        // pro.then(data => {
        //     console.log(data);
        // }, err => {
        //     console.log(err);
        // })


        console.log(pro);
        

        pro.then(data => {
            console.log(data);
            
        })

        pro.catch(data => {
            console.log(data);
            
        })
ログイン後にコピー

2.非同期の使用 :

async と await は ES7 によって提案されています

async の役割:

関数の戻り値での Promise オブジェクトの作成を簡略化する 一般的な状況 以下では、関数の先頭に async が記述されており、変更された関数の戻り値は Promise オブジェクトである必要があります。一部の特殊な場合にのみ、Promise オブジェクトが手動で返されます。

関数: Promise のような非同期の問題を解決します。ただし、その利点は、非同期コードを同期コードと同じにすることです!!
注: 同期メソッドでは、return を通じて結果を取得します。 value の場合、非同期メソッドはコールバック関数に依存して結果を取得します。
async と await で使用される基本構文

:


通常の関数の前に async を追加することであり、呼び出しは同じです通常の関数と同様

Async は通常、await と組み合わせて使用​​されます

  • await の後には Promise オブジェクトが続きます await は非同期で使用する必要がありますfunction

  • const makeRequest = () =>
            getJSON().then(data => {
                console.log(data)
                return "done"
            })
    
        makeRequest()
    ログイン後にコピー

    3. 違い
  • 1. 関数の前に追加の aync キーワードがあります。 await キーワードは、aync で定義された関数内でのみ使用できます。 async 関数は暗黙的に Promise を返し、Promise の解決値は関数の戻り値になります。 (例の reosolve 値は文字列「done」です)

    2. 最も外側のコードでは await を使用できません。これは async 関数内にないためです。

4.promise メソッド

const makeRequest = async () => {
 // await getJSON()表示console.log会等到getJSON的promise成功reosolve之后再执行。
        console.log(await getJSON)
        return "done"
    }

    makeRequest()
ログイン後にコピー

1.all メソッド


続行する前に、2 つ以上のリクエストが正常に返されるまで待機する必要がある場合があります。次のステップでは、約束のすべてのメソッドは、次のコールバックを行う前に、すべての非同期リクエストが完了するのを待つことです。

var r1 = new Promise((resolve,reject) => {
            setTimeout(function(){
                resolve("我是第一个请求");
            },1000)
        })
        var r2 = new Promise((resolve,reject) => {
            setTimeout(function(){
                resolve("我是第二个请求");
            },3000)
        })
        var r3 = new Promise((resolve,reject) => {
            setTimeout(function(){
                resolve("我是第三个请求");
            },4000)
        })
        var r4 = new Promise((resolve,reject) => {
            setTimeout(function(){
                resolve("我是第四个请求");
            },500)
        })
ログイン後にコピー

2.race メソッドリクエストは同時に送信されます。最初に戻ってくるのは誰のデータを使用するかです。

Promise.all([r1,r2,r3,r4]).then(data => {
            console.log(data);
            
        })
ログイン後にコピー

5. Promise カプセル化 Ajax のケース

Promise.race([r1,r2,r3,r4]).then(data => {
           console.log(data);
           
       })
ログイン後にコピー

[関連する推奨事項:

JavaScript ビデオ チュートリアル

Web フロントエンド

]

以上がPromise は es6 に基づいていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

非同期は es6 または es7 用ですか? 非同期は es6 または es7 用ですか? Jan 29, 2023 pm 05:36 PM

非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

ミニ プログラムで es6 を es5 に変換する必要があるのはなぜですか? ミニ プログラムで es6 を es5 に変換する必要があるのはなぜですか? Nov 21, 2022 pm 06:15 PM

ブラウザの互換性のため。 ES6 は JS の新しい仕様として、多くの新しい構文と API を追加していますが、最新のブラウザーは ES6 の新機能を高度にサポートしていないため、ES6 コードを ES5 コードに変換する必要があります。 WeChat Web 開発者ツールでは、デフォルトで babel が使用され、開発者の ES6 構文コードを 3 つの端末すべてで適切にサポートされる ES5 コードに変換し、開発者がさまざまな環境によって引き起こされる開発上の問題を解決できるようにします。プロジェクト内でのみ設定して確認するだけです。 「ES6~ES5」オプション。

約束を守る: 約束を守ることの長所と短所 約束を守る: 約束を守ることの長所と短所 Feb 18, 2024 pm 08:06 PM

日常生活では、約束と履行の間で問題に遭遇することがよくあります。個人的な関係でもビジネス取引でも、約束を守ることが信頼を築く鍵となります。ただし、コミットメントの是非についてはしばしば議論の余地があります。この記事では、約束の長所と短所を検討し、約束を守る方法についていくつかのアドバイスを提供します。約束されたメリットは明らかです。まず、コミットメントは信頼を築きます。人が約束を守るとき、その人は信頼できる人であると他人に信じ込ませます。信頼は人々の間に確立される絆であり、それは人々をより良くすることができます

es5 および es6 で配列重複排除を実装する方法 es5 および es6 で配列重複排除を実装する方法 Jan 16, 2023 pm 05:09 PM

es5 では、for ステートメントと IndexOf() 関数を使用して配列の重複排除を実現できます。構文 "for(i=0;i<配列長;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}」。 es6 では、スプレッド演算子 Array.from() および Set を使用して重複を削除できます。まず配列を Set オブジェクトに変換して重複を削除してから、スプレッド演算子または Array.from() 関数を使用する必要があります。 Set オブジェクトを配列に変換してグループ化するだけです。

Vue アプリケーションで Uncaught (in Promise) TypeError が発生した場合はどうすればよいですか? Vue アプリケーションで Uncaught (in Promise) TypeError が発生した場合はどうすればよいですか? Jun 25, 2023 pm 06:39 PM

Vue は人気のあるフロントエンド フレームワークであり、アプリケーションを開発するときにさまざまなエラーや問題に遭遇することがよくあります。このうち、Uncaught(inpromise)TypeError は一般的なエラー タイプです。この記事では、その原因と解決策について説明します。 Uncaught(inpromise)TypeError とは何ですか? Uncaught(inpromise)TypeError エラーは通常、次の場所に表示されます。

es6 の一時的なデッドゾーンとは何を意味しますか? es6 の一時的なデッドゾーンとは何を意味しますか? Jan 03, 2023 pm 03:56 PM

es6 では、一時的なデッド ゾーンは構文エラーであり、ブロックを閉じたスコープにする let および const コマンドを指します。コード ブロック内では、let/const コマンドを使用して変数が宣言される前に、変数は使用できず、変数が宣言される前は変数の「デッド ゾーン」に属します。これは構文上「一時デッド ゾーン」と呼ばれます。 ES6 では、一時的なデッド ゾーンや let ステートメントや const ステートメントでは変数のプロモーションが発生しないことを規定しています。これは主に実行時エラーを減らし、変数が宣言される前に使用されて予期しない動作が発生するのを防ぐためです。

Promise.resolve() について詳しく見る Promise.resolve() について詳しく見る Feb 18, 2024 pm 07:13 PM

Promise.resolve() の詳細な説明には、特定のコード例が必要です。Promise は、非同期操作を処理するための JavaScript のメカニズムです。実際の開発では、順番に実行する必要があるいくつかの非同期タスクを処理する必要があることがよくあり、満たされた Promise オブジェクトを返すために Promise.resolve() メソッドが使用されます。 Promise.resolve() は Promise クラスの静的メソッドであり、

es6 インポートは変数をプロモートしますか? es6 インポートは変数をプロモートしますか? Jan 18, 2023 pm 07:44 PM

ES6 インポートにより変数が昇格されます。変数ホイスティングとは、変数宣言をそのスコープの先頭に昇格させることです。 js はコンパイルと実行のフェーズを経る必要があります。コンパイル フェーズでは、すべての変数宣言が収集され、変数は事前に宣言され、他のステートメントの順序は変更されません。したがって、コンパイル フェーズでは、最初のステップはすでに2 番目の部分は、ステートメントが実行フェーズで実行された場合にのみ実行されます。

See all articles