JavaScript:非同期処理
JavaScriptは同期して実行されます.
これは、ブート(リフト)からコードを順番に並べます.
つまり、同期して実行します.
Hoisting,varとは,宣言された関数をコードの上部に置く.
上昇は最初に定義されることを意味します.
Callback Function
毒性低下 メンテナンス困難 Promise
resolve 機能を正常に実行し、最後にデータを転送できる関数です. reject 機能の実行中に問題が発生したときに呼び出される関数
主にErrorという名前のobjectを介してデータが伝達される.
どのようなエラーが発生した原因を明確に説明すべきである.
約束の中で、主にいくつかの重いことを処理します
主にネットワークからデータを受信します.
ファイルの読み込みは非同期で行うことが望ましい.
Promise作成時の注意事項を生成しながらexecutorを実行
ネットワークと通信するPromiseなら
ページのロード時にネットワーク通信を開始
ユーザ要求によるネットワーク通信が必要な場合、
気をつけて.
3つの値でデータを取得できます. then Promiseの値が正常に実行された場合、
Promiseの解析データを受信し、指定したタスクを実行します.
機能が完了したら、Promiseに戻ります. catch Promiseの値が正常でない場合
Promiseが拒否したデータを受信し、指定した操作を実行します.
catchを使用しない場合、Uncautorエラーが出力されます.
このように出力されたエラーをキャプチャし、コンソールログに出力します. finally 実行機能が成功するかどうかにかかわらず、最後にデータが出力されます.
複数のPromiseを接続して書く方法です.
別の非同期Promiseを渡すこともできます.
うまく処理することが大切です.
上記のコードに示すように、途中でエラーが発生した場合は、置き換えてもよい.
all Promiseに渡されたデータを並列に収集できるAPIです.
作り方は以下の通り.
配列として受け取り、文字列に変更して出力します. race まずPromiseに送信したデータを出力します.
async, await
これは、ブート(リフト)からコードを順番に並べます.
つまり、同期して実行します.
Hoisting,varとは,宣言された関数をコードの上部に置く.
上昇は最初に定義されることを意味します.
Callback Function
Calback Functionとは、宣言された関数のことです
あと行console.log('1');
setTimeout(function () {
console.log('2');
}, 1000);
console.log('3');
上記のコードの結果値は1、3、2に出力されます.
関数名settimeout
APIのため、1000 ms後に実行されます.
settimeoutのパラメータとして渡される関数は
settimeoutは、アップグレードではなく実行後に実行されます.
この実行方式をcallback関数と呼ぶ.
非同期処理関数とも呼ばれます.
ただ、このcallback関数にも同期処理の方法があります.function printImmediately(print) {
print();
}
printImmediately(() => console.log('Hello'));
このように書くと同期して処理できます.
各プログラミング言語でコールバック関数を処理する方法は異なります.
Callback Hell
コールバック関数を使いすぎると、
次の問題が発生する可能性があります.
console.log('1');
setTimeout(function () {
console.log('2');
}, 1000);
console.log('3');
function printImmediately(print) {
print();
}
printImmediately(() => console.log('Hello'));
Promise
objectは非同期処理を簡素化するのに役立つ.
機能が正常に動作していると判断した場合は、成功した情報が表示されます.
処理された結果値を渡します.
機能が正常に機能しないと、エラーが発生します.
PromiseはJavaScriptのオブジェクトです.
非同期処理のために作成されます.
State
Promiseを作成し、指定した操作を実行している場合、
終盤に入る.
逆に、行動を成功させると、完成した状態になります.
実行できない場合やエラーが発生した場合は、拒否されます.
Producer
const promise = new Promise(resolve, reject) => {
console.log('doing something...')
resolve('pangho')
// reject(new Error('no network'));
}
Promiseはクラスを作成し、作成時にコールバック関数を作成できます.
追加するには、2つのコールバック関数を受け入れます.
const promise = new Promise(resolve, reject) => {
console.log('doing something...')
resolve('pangho')
// reject(new Error('no network'));
}
主にErrorという名前のobjectを介してデータが伝達される.
どのようなエラーが発生した原因を明確に説明すべきである.
約束の中で、主にいくつかの重いことを処理します
主にネットワークからデータを受信します.
ファイルの読み込みは非同期で行うことが望ましい.
Promise作成時の注意事項
ネットワークと通信するPromiseなら
ページのロード時にネットワーク通信を開始
ユーザ要求によるネットワーク通信が必要な場合、
気をつけて.
Consumers
3つの値でデータを取得できます.
promise
.then(value => {
console.log(value);
})
.catch(error => {
console.log(error);
})
.finally(() => {
console.log('finally')
});
Promiseの解析データを受信し、指定したタスクを実行します.
機能が完了したら、Promiseに戻ります.
Promiseが拒否したデータを受信し、指定した操作を実行します.
catchを使用しない場合、Uncautorエラーが出力されます.
このように出力されたエラーをキャプチャし、コンソールログに出力します.
Promise chaining
複数のPromiseを接続して書く方法です.
const fetchNumber = new Promise ((resolve, reject) => resolve(1));
fetchNumber
.then(num => num * 2)
.then(num => num * 3)
.then(num => {
return new Promise((resolve, reject) => resolve(num - 1));
})
.then(num => console.log(num));
そうですか.その後、データを作成してすぐに送信できます.別の非同期Promiseを渡すこともできます.
Error Handling
const getHen = () =>
new Promise ((resolve, reject) => {
setTimeout(() => resoleve('🐔'), 1000;
});
const gerEgg = () =>
new Promise ((resolve, reject) => {
setTimeout(() => reject(new Error(`error! ${hen} => 🥚`)), 1000;
});
const cook = () =>
new Promise ((resolve, reject) => {
setTimeout(() => resoleve(`${egg} => 🍳`), 1000;
});
getHen()
.then(getEgg)
.catch(error => {
return '🦄';
})
.then(cook)
.then(console.log)
.catch(console.log);
エラー発生時にキャプチャされていない場合は、操作を実行できません.うまく処理することが大切です.
上記のコードに示すように、途中でエラーが発生した場合は、置き換えてもよい.
Promise APIs
作り方は以下の通り.
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(1000);
return '🍎';
}
async function getBanana() {
await delay(1000);
return '🍌';
}
function pickAllfruits() {
return promise.all([getApple(), getBanana()])
.then(fruits => fruits.join(' + '));
}
pickAllFruits().then(console.log);
リンゴとバナナがデータに送られたら配列として受け取り、文字列に変更して出力します.
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(2500);
return '🍎';
}
async function getBanana() {
await delay(1000);
return '🍌';
}
function pickOnlyOne() {
return promise.race([getApple(), getBanana()])
}
pickOnlyOne().then(console.log);
アップルとバナナはまず伝送されたデータ出力を受信する.async, await
Promiseをより簡潔に作成します.
コードを同期して実行しているように見えます.async function fetchUser() {
return 'pangho';
}
const user = fetchUser();
user.then(console.log);
console.log(user)
関数にasyncを書き込む前にPromiseが自動的に生成されます.function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(1000);
return '🍎';
}
async function getBanana() {
await delay(1000);
return '🍌';
}
async function pickFruits() {
const apple = await getApple();
const banana = await getBanana();
return `${apple} + ${banana}`;
}
pickFruits().then(console.log);
待っているコードは、ある行動が終わるまで待つことです.
return値のコードを出力します.
Reference
この問題について(JavaScript:非同期処理), 我々は、より多くの情報をここで見つけました
https://velog.io/@pangho/JavaScript-비동기처리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
async function fetchUser() {
return 'pangho';
}
const user = fetchUser();
user.then(console.log);
console.log(user)
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(1000);
return '🍎';
}
async function getBanana() {
await delay(1000);
return '🍌';
}
async function pickFruits() {
const apple = await getApple();
const banana = await getBanana();
return `${apple} + ${banana}`;
}
pickFruits().then(console.log);
Reference
この問題について(JavaScript:非同期処理), 我々は、より多くの情報をここで見つけました https://velog.io/@pangho/JavaScript-비동기처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol