210721同期と非同期、コールバック

2302 ワード

同期(synchronize)と非同期(asynchronize)


≪同期処理|Synchronize Process|oem_src≫:現在処理されているタスクが完了したら、次のタスクを実行します.
非同期処理:物事が終わるまで待つのではなく、次のことを処理します.
生活コードの説明が基礎的すぎて、きょろきょろしている.
[Async,非同期および同期]PromiseからAwaitへ
async/awaitを使用する前に承諾を理解する
文章を参考にした.

コールバック関数


パラメータ伝達関数によって、関数内部で実行される関数.
まず関数を渡し、後で呼び出します.
システムがイベントが発生したり、ある時点に達したりしたときに呼び出される関数.言える.
var a = function(){
  console.log('A');
}
 
 
function slowfunc(callback){
  callback();
}
 
slowfunc(a);
ここで、コールバック関数aはcallbackパラメータとして扱われる.
関数を宣言するときではなく、slowfunc内で関数を呼び出すときに実行します.

Promise


コールバックhellを導入して、複数のコールバック関数が重なる場合に発生するコールバックを解決します.
  • 構造は簡単で、毒性がよく、戻り値を見つけやすい.
  • コールバック関数で生成された承諾オブジェクトを用いて、コールバック関数は、成功、失敗、エラーの状況に応じて後続処理を行うことができる.
  • 非順序非同期関数の実行順序を制御することができる.
  • Promiseはほぼ宣言部と動作部で構成されている.
    宣言:promiseオブジェクトの作成
    アクションセクション:宣言されたオブジェクトを呼び出す

  • pending
    new Promiseを使用してPromiseを作成してからresolveまたは拒否を呼び出す瞬間まで

  • fullfilled
    処理が完了し、結果値が返された状態
    非同期処理関数値が成功した場合、resolveメソッドが呼び出され、resolveメソッドパラメータに設定された非同期関数の結果値が渡されます.この結果値はthenによって後続処理されます.

  • rejected
    処理に失敗またはエラーが発生した状態
  • function getFirstUser() {
        return getUsers().then(function(users) {
        //처리가 완료되면 then으로 넘어온 함수의 결과값 전달
            return users[0].name;
        }).catch(function(err) {
        //에러 처리
            return {
              name: 'default user'
            };
        });
    }
    getUsers()はpromiseを返すので、待つことができます.
    awaitを使用して同じコードを表現すると、こうなります.
    コールバック関数ではなくtry/catchでエラーを処理します.
    async function getFirstUser() {
        try {
            let users = await getUsers();
            return users[0].name;
        } catch (err) {
            return {
                name: 'default user'
            };
        }
    }