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

在es6中,可以利用“Array.isArray()”方法判断对象是否为数组,若判断的对象是数组,返回的结果是true,若判断对象不是数组,返回的结果是false,语法为“Array.isArray(需要检测的js对象)”。

es6中遍历跟迭代的区别是:遍历强调的是要把整个数据依次全部取出来,是访问数据结构的所有元素;而迭代虽然也是依次取出数据,但是并不保证取多少,也不保证把所有的数据取完,是遍历的一种形式。

在es6中,可用Object对象的is()方法来判断两个对象是否相等,该方法检测两个变量的值是否为同一个值,判断两个对象的引用地址是否一致,语法“Object.is(对象1,对象2)”;该方法会返回布尔值,若返回true则表示两个对象相等。

转换方法:1、利用“+”给数字拼接一个空字符,语法“数字+""”;2、使用String(),可把对象的值转换为字符串,语法“String(数字对象)”;3、用toString(),可返回数字的字符串表示,语法“数字.toString()”。

sort排序是es6中的;sort排序是es6中用于对数组的元素进行排序的方法,该方法默认不传参,按照字符编码顺序进行排序,排序顺序可以是字母或数字,并按升序或降序,语法为“array.sort(callback(a,b))”。

在es6中,assign用于对象的合并,可以将源对象的所有可枚举属性复制到目标对象;若目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性,语法为“Object.assign(...)”

改变方法:1、利用splice()方法修改,该方法可以直接修改原数组的内容,语法为“数组.splice(开始位置,修改个数,修改后的值)”;2、利用下标访问数组元素,并重新赋值来修改数组数据,语法为“数组[下标值]=修改后的值;”。

在es6中,import as用于将若干export导出的内容组合成一个对象返回;ES6的模块化分为导出与导入两个模块,该方法能够将所有的导出内容包裹到指定对象中,语法为“import * as 对象 from ...”。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ホットトピック



