q筆記一:非同期プログラミング入門
2741 ワード
q筆記一:非同期プログラミング入門
ソースのgithubアドレスはここで、星を覚えています.https://github.com/brandonxiang/example-q
前言
javascriptの長所は、非閉塞にあることをみんなが知っています.Javascript非同期プログラミングの4つの方法は、Javascriptの単一スレッドの特性と同期(Synchronous)非同期(Asynchronous)の実行モードを指摘し、4つの非同期の方法を説明しました.今最も重要なのはもちろんPromisesオブジェクトです.
PromisesオブジェクトはCommonJS作業グループが提案した仕様で、非同期プログラミングのために統一インターフェースを提供することを目的としています.
非同期プログラミングは大きな効率優位を持っていますが、非同期が多いとピラミッド型のコード構造になり、読みにくくなり、非同期の制御が非常に難しくなります.
PromiseはES 5で実現しました q ブルーバード co when qの詳細
他のいくつかの資源庫は大同小異で、ひそかに研究しておくべきです.
シリアル
並列に対応する関数(
まず串を刺してから並べても、先を並べてから刺してもいいです.並列プログラム
最後に、このノートは物理回路のように書かれています.q公式文書のコードを参照してください.
以前の非同期プログラムのコードはこのようです.
ソースのgithubアドレスはここで、星を覚えています.https://github.com/brandonxiang/example-q
前言
javascriptの長所は、非閉塞にあることをみんなが知っています.Javascript非同期プログラミングの4つの方法は、Javascriptの単一スレッドの特性と同期(Synchronous)非同期(Asynchronous)の実行モードを指摘し、4つの非同期の方法を説明しました.今最も重要なのはもちろんPromisesオブジェクトです.
PromisesオブジェクトはCommonJS作業グループが提案した仕様で、非同期プログラミングのために統一インターフェースを提供することを目的としています.
非同期プログラミングは大きな効率優位を持っていますが、非同期が多いとピラミッド型のコード構造になり、読みにくくなり、非同期の制御が非常に難しくなります.
$.getJSON('./api', function(data){
console.log(data);
$.getJSON('./api', function(data){
console.log(data);
}
})
この時はPromiseモードが必要です.このようなモデルはES 6ですでに官配されています.Javascriptの神器Promiseを参考にしています.しかし、一部の人はまだES 5の開発に滞在しています.node.jsに接触していない場合、第三者倉庫を使って非同期のプロセスをコントロールする必要があります.PromiseはES 5で実現しました
他のいくつかの資源庫は大同小異で、ひそかに研究しておくべきです.
シリアル
then
は、1つのキーワードとして、関数async('first')
とasync('second')
とasync('third')
とasync('fourth')
とを分離し、全体的に第1の関数を完成させてから第2の関数のシーケンス動作を完了することを示している.async('first').then(function (resp) {
console.log(resp);
return async('second');
}).then(function (resp) {
console.log(resp);
return async('third')
}).then(function (resp) {
console.log(resp);
return async('fourth');
}).then(function (resp) {
console.log(resp);
});
並行並列に対応する関数(
async('a')
およびasync('b')
およびasync('c')
)を事前に配列に装備する.これらはQ.all()
で並列処理され、すなわちこれらの関数は同時に処理される.var promises = [];
promises.push(async('a'));
promises.push(async('b'));
promises.push(async('c'));
Q.all(promises);
パラレルリンクまず串を刺してから並べても、先を並べてから刺してもいいです.並列プログラム
Q.all(promises)
の後にthen
のキーワードを追加し、シリアルパラレルミックスを実現し、データを引き出した後にすべてのデータを操作するのに非常に適している.Q.all(promises).then(function(){
console.log('hello world');
})
締め括りをつける最後に、このノートは物理回路のように書かれています.q公式文書のコードを参照してください.
以前の非同期プログラムのコードはこのようです.
step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
step4(value3, function(value4) {
// Do something with value4
});
});
});
});
現在非同期プログラミングのコードはこのようです.Q.fcall(promisedStep1)
.then(promisedStep2)
.then(promisedStep3)
.then(promisedStep4)
.then(function (value4) {
// Do something with value4
})
.catch(function (error) {
// Handle any error from all above steps
})
.done();
転載します.出典を教えてください.総ディレクトリ先端経験集器