非同期性のフロントエンドは、最新のES7(ES2017)で提案されている:非同期、待っています。
非同期は、何待っているのですか?
非同期は非同期で非同期に関数を宣言するために使用され、それが「非同期」の手段であることを示唆しています。そして、待っては文字通り非同期完了を待っている、手段を「待つ」という意味します。非同期機能で使用することだけ待ちます
通常非同期、約束に従って待つが一緒に使用されています。なぜあなたは言うのですか?非同期非同期関数の任意の適切なタイプで戻さながらオブジェクトが約束されているからです。そのような結果は、プロミスオブジェクト(オブジェクトではない場合、それは非同期それが何であるかを返すことを約束)で待ちます。
取得した後のPromiseオブジェクトは、次の解決を待つか、拒否することを約束待っています。
簡単なコードを見てください:
非同期関数testSyncは(){
CONST応答=新たな約束を待つ(解決=> {
たsetTimeout(()=> {
解決( "非同期に...テストを待つ");
}、1000);
});
console.log(応答)。
}
testSync(); //非同期のawait試験...
だから、単純な非同期は、非同期の完全なを待っています。非同期を使用して、非同期操作のコードの完了が書かれており、より多くの同期または理解しやすいように読まれる待っています。
非同期シリアルパラレル処理を待ちます
シリアル:後者の前で待っているが、その後に行われるようでawaitを実行を待って、そして
非同期関数asyncAwaitFn(STR){
戻り、新たな約束((決意、リジェクト)=> {待つ
のsetTimeout(()=> {
解決(STR)
;}、1000)
})
}
CONST serialFn =非同期()=> {//串行执行
console.time( 'serialFn')
はconsole.log(asyncAwaitFnを待つ( '列1'));
console.log(asyncAwaitFnを待つ( '列2'));
console.timeEnd( 'serialFn')
}
serialFn()。
あなたは2002のミリ秒単位の合計時間は、シリアル実行を待つ見ることができます。
(非同期ロケーション機能を実行する前に)複数の約束直接開始要求、および、操作を待つ:パラレル。
非同期関数asyncAwaitFn(STR){
戻り、新たな約束((決意、リジェクト)=> {待つ
のsetTimeout(()=> {
解決(STR)
;}、1000)
})
}
CONST平行=非同期()=> {//并行执行
console.time( '平行')
CONST parallelOne = asyncAwaitFn( '列1')。
CONST parallelTwo = asyncAwaitFn( '列2')
//直接打印
はconsole.log(parallelOneを待つ)
はconsole.log(parallelTwoを待つ)
console.timeEnd( 'パラレル')
}
平行()
私たちは効率を倍増、シリアル実行に関して印刷してそれを見ることができます。その結果を待って実行非同期動作の要求、その後非同期に並行して、要求コードをパラレルシリアル複数のより迅速かつ効率的に行うことができます。
非同期、エラー処理を待ちます
JavaScriptの非同期要求が確かに要求があるだろう失敗し、上記にも非同期プロミスオブジェクトを返すと述べました。それはオブジェクトを返すことを約束しているので、それはエラーが発生したとき、我々は拒否の状況に対処します非同期要求処理です。
約束は、私たちがキャッチを使用することができます時間内に、要求を拒否します。我々はエラーを処理しようとするキャッチを使用するときに非同期コードの堅牢性を維持するためには、待っています。
非同期catchErr機能(){
試み{
インクルードが新しい新しい約束待つのconst = errRes((解決、拒否)=> {
のsetTimeout(()=> {
拒否( "HTTPエラー...");
}、1000);
);
//通常の後、我々はまた、現在の状態を決定する際に要求の成功を待つことができ、要求が成功したかどうかを決定するために200ではない
; //にconsole.log(errRes.status、errRes.statusText)
}キャッチ(ERR){
;はconsole.log(ERR)
}
}
catchErr(); // HTTPエラー...
これらは、使用トライキャッチエラー処理を待って、非同期です。
非同期ますが、また約束を減らすために使用されるが、その後、プロセス全体の約束非同期リクエストコードさわやかなのかなって待っています。
これらは、個人ES7非同期いくつかの個人的な理解を待って、他の後続の更新が補完されますがあり、偉大な神を書くことではない場所では、あなたが、私を修正ありがとう歓迎します!
オリジナルリンク:https://www.cnblogs.com/leungUwah/p/7932912.html
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------
展開します。
console.time使用状況やconsole.timeEnd
console.timeとconsole.timeEndこれらの2つの方法は、開発者がWEB JavaScriptのスクリプトの実行時間の消費量を測定できるようにするために使用することができます。より多くの重要なWebアプリケーションには、JavaScriptの実行性能が関心が高まっ受信した、Web開発者は、いくつかのパフォーマンスの試験機が不可欠である知っています。console.timeとconsole.timeEndはそのうちの一つです今日紹介しました。
console.timeアプローチは、計算時間を開始することで、console.timeEndはクロック、スクリプト実行時の出力を停止します。
//タイマーの開始
; console.time( 'testForEach')
//(書き込みテストコード)
//はクロックを停止し、出力時間
console.timeEnd( 'testForEach');
// 4522.303ms
両方の方法は、タイマーの名前として、その役割は並列各タイマクリア分割コードで実行することで、後続のパラメータとすることができます。Console.timeEndはミリ秒単位で、合計時間で消費される出力の即時実行のために呼び出されます。
注:デフォルトでは、パラメータを渡していない場合console.timeは一貫していなければならないパスパラメータconsole.timeEndパラメータ(「サイクル開始時刻」)(「サイクル開始時間」)、それ以外の場合は出力がタイミングされていない、タイミングが、0msと次のとおりです。デフォルト:08080ms
そこJavaScriptのパフォーマンスをテストするための多くの方法がありますが、console.time / timeEnd二つの方法が最も基本的で簡単な技術です。
IE8は、コンソールをサポートしていません解決
IE8は、コンソールをサポートしていない解決、コードはコンソールが含まれている場合に文句を言うだろう
//解决IE8不支持コンソール
window.console = window.console || (関数(){
VARのC = {}; c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile
= c.clear = c.exception = c.trace = c.assert =関数(){};
Cを返します;
})();
オリジナルリンク:https://blog.csdn.net/longzhoufeng/article/details/78801042