Promiseモード

2144 ワード

Promise概要
javascriptが一番頭が痛い問題は非同期の問題だと知っていますので、当然ながら、Node.js(以下で紹介するのもNode.js)、async、es 6 generatorなど、多くの非同期問題を解決する方案が生まれました.ここで紹介しているのはPromiseモードです.私たちが作ったプラグインはブルーバードです.
catch error
promiseに接触したのもtry catchの問題で、try catchがcalbackの方法の中のerrorを捕獲できるということが分かりました.その時は言葉がないと感じました.その後に紹介されてpromiseに触れました.promiseは以下のコードのようなエラーを捕捉するメカニズムを提供する.
  new Promise(function (fulfilled, rejected){
    var name = yuansc.name;
  }).catch(function (e) {
      console.log('error:',e);
    })
以下のコードで直接異常をキャッチできます.そしてtry catchを書く手間を省きました.次のようにプリントします.
error: [ReferenceError: yuansc is not defined]
calbackメソッドの使用
多くの場合、私達はcalbackの方法を使いますが、promiseはどうやってcalbackを使いますか?
function callbackTest(callback) {
  return  new Promise(function (fuifilled, rejected) {
    fs.readFile('./file1', function(err, result) {
      if(err) {
        rejected(err);
      }
      fuifilled(result);
    })
  }).nodeify(callback);
}
callbackTest(function (err, result) {
  console.log(err, result.toString());
});
上記のコードによると、プロミスは最初に二つのパラメータfulfilledとrejecedを受信します.この二つの方法を使うと、rejectはcalbackの一番目のオプションを表しています.fulfilledは第二のオプションに対応しています.
return Promise
promiseの大きな特徴は、あなたが使用している間にプロミスのオブジェクトに戻り続けることができ、プロミスの属性を継続的に適用することができます.
function returnPromise() {
  return  new Promise(function (fulfilled, rejected) {
    fs.readFile('./file1', function(err, result) {
      if(err) {
        rejected(err);
      }
      fulfilled(result);
    })
  })
}
returnPromise().then(function (result) {
  console.log("result", result.toString());
}).catch(function (e) {
  console.log("error", e);
});
これでプロモーションの効果が持続します.
thenの継続
thenはpromiseで有名なキーワードです.thenもとても使いやすいです.
function dothen() {
  return new Promise(function (fulfilled, rejected) {
    fulfilled("hello");
  }).then(function (value) {
      return value +" world"
    }).then(function (value) {
      console.log(value);
    })
}
この言葉はプリントしたら
hello world
PS
紹介はあまり全面的ではありません.詳細は下記のAPIソースコードAPIをクリックしてください.