ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript は Promise オブジェクトを使用して非同期プログラミングを実装します_JavaScript スキル

JavaScript は Promise オブジェクトを使用して非同期プログラミングを実装します_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 15:12:351175ブラウズ

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

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