ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript は Promise オブジェクトを使用して非同期プログラミングを実装します_JavaScript スキル
Promise オブジェクトは、非同期プログラミング用に CommonJS ワーキング グループによって提供される統一インターフェイスです。これは、ECMAScript6 で提供される Promise のネイティブ サポートです。Promise を使用すると、コールバック関数の層のネストを回避できます。この仕様により、非同期操作の制御が容易になります。拒否、解決、その後、キャッチなどのメソッドを提供します。
約束を使用する
Promise は ES6 以降のネイティブ オブジェクトです。直接使用するには、Promise オブジェクトをインスタンス化するだけです。
Promise のインスタンス化:
var promise = new Promise(function (resolve, reject) { console.log('begin do something'); if (Math.random() * 10.0 > 5) { console.log(" run success"); resolve(); } else { console.log(" run failed"); reject(); } });
ここではコールバックメソッド関数(resolve,reject)が定義されており、成功した場合はresolveが呼び出され、失敗した場合はrejectが呼び出されます。
Promise.prototype.then は、Promise が実行された後のコールバックです。 then メソッドを使用して、resolve と拒否のコールバックをそれぞれ指定できます。
promise.then(function () { console.log(' resolve from promise'); }, function () { console.log(' reject from promise'); });
実行結果 1:
begin do something run success resolve from promise
実行結果 2:
begin do something run failed reject from promise
ネットワークリクエストには PROMISE を使用してください
getRequest = function (url) { var promise = new Promise(function (resolve, reject) { var request = require('request'); request(url, function (error, respones, body) { if (error) { reject(error); return; } if (respones.statusCode == 200) { resolve(body) } else { reject(respones.status); } }); }); return promise; }; getRequest("https://github.com/").then(function (result) { console.log(result); }, function (error) { console.error('error', error); });
Promise を使用してネットワーク リクエストを作成します。また、Promise を使用してブラウジング時に Ajax リクエストを実装することもできます。
コードアドレス: https://github.com/jjz/node