(JS)BelloperのモダンJavaScript:非同期処理
9814 ワード
出版する
タスクを同期処理すると、タスクの完了を待つ間に停止状態になるため、他のタスクは実行できません.仕事が終わってからでないと次の予定の仕事ができないからです.
ただし、非同期処理を行うとストリームは停止しないため、複数のタスクを同時に処理できます.
大量の計算タスクを処理する関数の作成
function work() {
const start = Date.now();
for (let i = 0; i < 1000000000; i++) {}
const end = Date.now();
console.log(end - start + 'ms');
}
work();
console.log('다음 작업');
work()
関数が露出すると、for文が返されると、他の操作を処理せずにfor文が完全に実行されます.このプロセスで他の操作を行う場合は、関数を非同期形式に変換する必要があります.そのためには、
setTimeOut
という関数を使用する必要があります.function work() {
setTimeout(() => {
const start = Date.now();
for (let i = 0; i < 10000000; i++) {}
const end = Date.now();
console.log(end - start + 'ms');
}, 0);
}
console.log('작업시작');
work();
console.log('다음 작업');
setTimeout
関数は、第1のパラメータの関数を第2のパラメータに入れる時間(ms単位)後に呼び出される.(これは、0ミリ秒後に実行されることを意味しますが、実際には4ミリ秒後に実行されます.)setTimeout
を使用すると、指定したタスクはバックグラウンドで実行されるため、既存のコードストリームをブロックせずに他のタスクを同時に実行できます.ワーク関数が終わったら、どんなタスクを処理したいですか?
パラメータとしてコールバック関数を渡す
コールバック関数とは、関数タイプの値をパラメータに渡し、特定の操作が完了した後にパラメータとして受信した関数を呼び出すことです.
function work(callback) {
setTimeout(() => {
const start = Date.now();
for (let i = 0; i < 10000000; i++) {}
const end = Date.now();
console.log(end - start + 'ms');
callback();
}, 0);
}
console.log('작업 시작');
work(() => {
console.log('작업이 끝났어요!')
});
console.log('다음 작업');
プライマリ非同期処理
Reference
この問題について((JS)BelloperのモダンJavaScript:非同期処理), 我々は、より多くの情報をここで見つけました https://velog.io/@yunsungyang-omc/JS-벨로퍼트의-모던-자바스크립트-비동기-처리-다루기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol