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
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);
})