nodejs非同期のいくつかの方法

1504 ワード

asyncライブラリ、es 6のpromise-then、es 7のawait-async
1.forサイクル中の非同期は、常にnodejsのasyncライブラリを使っています.非同期同期をサポートする多くの方法があります.
async.each():forEachはアキュムレータflagga+とよく似ています.サイクルは順番に開かれますが、実行は非同期です.index=1とindex=100といったように、タスクを起動するのは前の方です.実行終了もindex=100の先の出力結果かもしれません.
async.eachSeries():厳格に循環内部が毎回同期していることを保証して、javaの中で単にスレッドのfor循環がデータベースを検索することに類似しました.
再帰:従来の再帰方法は、フロントjs、例えばangglarjs controleでfor循環http要求を含む同期を厳格に保証することもできる.
 
2.限られた複数の業務の非同期化は、フィードバックで常に入れ子でき、コードの維持が複雑すぎて、以下の方法で最適化される:
async.waterfull():同期実行(シリアル)には関連があり、function間でデータインタラクションがあり、前のfunctionの出力は次のfunctionの入力として使用できます.
async.series():同期実行(シリアル)は関連がなく、function間でインタラクションがない.
 
3. promise-thenとawait-async
二つの同等の方法で、await-asyncはもっと簡単で優雅です.async方法は同時にreturnは新しいPromiseを作って戻ってきました.awaitはthenに相当します.
async=return new Promise、await=then 
// return promise,    .then  await  
function promiseDemo () {
	return new Promise((resolve) => {
	resolve(2);
})
}

// then  
function testPromiseDemo1 () {
	promiseDemo().then((data) => {
		console.log(data);
	})
}
testPromiseDemo1();

// await  
async function testPromiseDemo2 () {
	var val = await promiseDemo();
	console.log(val);
	return val;
}
testPromiseDemo2();  //     2
testPromiseDemo2().then((data) => {
	console.log(data);  //      2
})



//    return new Promise((resolve) => {resolve(1)})
async  function asyncDemo() {
	return 1;
}

// then    ,      await  
asyncDemo().then((data) => {
	console.log(data);  
})