TIL. Promise
promiseについて曖昧な理解があり,fetch構文を用い,さらにasyncwait,axoisを用いた.
async awaitを使うときは、使い方よりも、どのように働いているのかを根本的に知るべきだと思います.
まずjavascriptは同期(synchronous)処理を行う.
だから.
非同期処理の方法もあり、settimeout関数を代表的に使用します.
実行を保留し、先に処理できる関数を優先します.
いくつかの関数はこのように外すことができます.
settimeout、addEventListener、ajax関連関数の実行点と動作点が異なります.
すなわち,動作に時間がかかり,一時的にWebAPIに放置される.
WebapiはJavaScriptの内蔵機能ではなく、ブラウザ機能です.
従って、非同期処理を行うことができる.
コールバック関数は次のとおりです.
関数の関数をコールバック関数と呼びます.
非同期処理で関数を順次実行する場合は、コールバック関数を使用します.
2つの関数を順次実行したい場合は?
答えはそうではありません.非同期運転の特殊性のため、このように書くのは順次運転できません.
コールバック関数を呼び出してこそ、順次実行できます.
コールバック関数を直接入力することもできます.ただし、コードは右に延長される可能性があります.
そうすると可読性が低下するのでPromiseを使います.
promiseは、非同期処理の場合に関数を順次実行し、コードの可読性を向上させることができる.しかし、これはコードが同期を非同期にすることを意味するものではありません.これは設計モードにすぎません.通常は同期コードが実行されますが、特殊な関数のために非同期で実行されます.
使用方法:
すなわち,可読性が良く,コールバック関数が実行されていない場合には(?)に対応する.可能性があります.
catchのコードは、コールバック関数の実行に失敗したときに実行されます.
会員登録や登録の際には、パスワードエラーや失敗時のエラーコードを確認して対応できます.
async awaitを使うときは、使い方よりも、どのように働いているのかを根本的に知るべきだと思います.
同期/非同期
まずjavascriptは同期(synchronous)処理を行う.
だから.
<script>
console.log('a');
console.log('b');
console.log('c');
</script>
そうすると順番に実行されます.非同期処理の方法もあり、settimeout関数を代表的に使用します.
<script>
console.log('a');
setTimeout(function(){}, 2000);
console.log('c');
</script>
このようにして実行すると、順番に実行されないsettimeout関数は2秒後に実行されるので、先に別の関数が実行され、settimeout後の2秒以内に実行されます.実行を保留し、先に処理できる関数を優先します.
いくつかの関数はこのように外すことができます.
settimeout、addEventListener、ajax関連関数の実行点と動作点が異なります.
すなわち,動作に時間がかかり,一時的にWebAPIに放置される.
WebapiはJavaScriptの内蔵機能ではなく、ブラウザ機能です.
従って、非同期処理を行うことができる.
コールバック関数
コールバック関数は次のとおりです.
関数の関数をコールバック関数と呼びます.
非同期処理で関数を順次実行する場合は、コールバック関数を使用します.
2つの関数を順次実行したい場合は?
function first () {
console.log("이것은 첫번째 함수")
}
function second () {
console.log("이것은 두번째 함수")
}
first()
second()
これで順次実行されますか???答えはそうではありません.非同期運転の特殊性のため、このように書くのは順次運転できません.
コールバック関数を呼び出してこそ、順次実行できます.
function first (callback) {
console.log("이것은 첫번째 함수");
callback()
}
function second () {
console.log("이것은 두번째 함수")
}
first(second)
これにより、1番目の関数のみが実行され、2番目の関数が実行されます.コールバック関数を直接入力することもできます.ただし、コードは右に延長される可能性があります.
そうすると可読性が低下するのでPromiseを使います.
Promise
promiseは、非同期処理の場合に関数を順次実行し、コードの可読性を向上させることができる.しかし、これはコードが同期を非同期にすることを意味するものではありません.これは設計モードにすぎません.通常は同期コードが実行されますが、特殊な関数のために非同期で実行されます.
使用方法:
let promise = new Promise()
promise.then().catch()
コールバック関数よりも良いことを約束したのは、コードが長くなったり汚くなったりしないためです.すなわち,可読性が良く,コールバック関数が実行されていない場合には(?)に対応する.可能性があります.
catchのコードは、コールバック関数の実行に失敗したときに実行されます.
会員登録や登録の際には、パスワードエラーや失敗時のエラーコードを確認して対応できます.
.catch(err => console.log(err.response) )
promise内で特定のコードを記述し、成功または失敗したときにpromiseを実行できます.let promise = new Promise(function(resolve, reject){
let a = 1 + 1;
resolve();
});
promise.then(function(){
// 실행하고 싶은 코드
}).catch(function(){
//실패했을 때 실행하고 샆은코드
});
実は約束は難しい.resolve ? reject ? Promiseでexcept()が宣言されている場合、catchのコードが実行されます.だからresolve、rejectはどちらも使用せず、1つだけ使用します.Reference
この問題について(TIL. Promise), 我々は、より多くの情報をここで見つけました https://velog.io/@jungzkxm/TIL.-Promiseテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol