# Promise - resolve,reject


promise !? 🔮



定義#テイギ#
Promisは、JavaScriptが提供する非同期を容易に処理できるES 6に導入された機能です.
長時間のプロジェクトが完了すると、機能が正常に動作している場合は、成功したメッセージと処理値が渡され、機能の実行中に問題が発生した場合はエラーが発生します.
  • Promiseは一流です.
  • Promiseクラスをインスタンス化してpromiseオブジェクトを作成します.
  • で返される承諾処理に必要な非同期動作.
  • 使用方法を承諾します!🎃


    promiseは、新しいPromiseを生成するとすぐにexecutor(実行関数に解析パラメータと拒否パラメータを渡す)と呼ばれるコールバック関数を実行します.
    let promise = new Promise(function(resolve, reject) {
    	// 여기 비동기 로직을 작성!
    	// 시켜놓고 언제 완료될지 모르는 로직!
    });
    Promiseオブジェクトはnewキーワードとジェネレータを使用して作成されます.
    パラメータとしてexecutorを受け入れます.このパラメータは2つの関数を受け入れなければなりません.
    1つ目はresolve(成功時に実行)、2つ目はexecute(失敗時に実行)です.
  • resolve,debug関数はJavaScriptエンジンで予め定義されている.
  • だから伝えなくてもコールは問題ない.
  • let promise = new Promise(function(resolve, reject) {
    	resolve();  // 에러 안 납니다.
    	reject();
    	console.log('실행 됨');
    });

    どうやって決意を書きますか?!💢

    let promise = new Promise(function(resolve, reject) {
    	// 여기 비동기 로직을 작성!
    	// 시켜놓고 언제 완료될지 모르는 로직!
    
    	// 완료 하면 -> resolve 호출
      // 비동기 동작 실패 하면 -> reject 호출
    });
    
    promise.then(function() {
    	// 이 함수가 바로 위의 resolve 입니다.
    	// 위의 비동기 로직이 성공하면 호출 됩니다!
    });
    promiseのprototypeでthen関数を実行し、パラメータとしての関数を追加します.
    その関数は解決を意味します!(2つの関数が入っている場合、1つ目はresolve関数でしょうか?)
    こちらです.何ですか.🖊
    Promise.prototype.then()
    その後()メソッドはpromiseを返し,パラメータとして2つのコールバック関数を受け入れる.p.then(onFulfilled, onRejected);
    let promise = new Promise(function(resolve, reject) {
    });
    // then 인자 둘 다 callback 함수
    // 첫 번째는 성공했을 때 실행할 resolve 함수 정의
    // 두 번째는 실패했을 때 실행할 reject 함수 정의
    promise.then(function() {}, function() {});

    サンプルコード📝

    let promise = new Promise(function(resolve, reject) {
        setTimeout(function() {
    				// resolve 함수에 인자 넘기면
            resolve('hello world');
        }, 2000);
    });
    
    // resolve로 넘기는 콜백함수의 매개변수로 받을 수 있다.
    promise.then(function(msg) {
        console.log(msg);  // 2초 뒤에 hello world!
    });
    promiseにsettimeout関数があるので、2秒後に解決がスムーズに実行されます.
    それなら承知します.次に、resolve実行時に渡されるパラメータを2秒後にコンソールで撮影します.

    廃品の使い方が似ている💢💢


    次の例では、失敗したと仮定し、拒否後承諾を呼び出します.次に、2番目の関数は拒否関数を定義します.
    let promise = new Promise(function(resolve, reject) {
    	setTimeout(function() {
    				// 실패한 건 아니지만, 실패했다고 가정하고 reject 호출
            reject('으악!');
      }, 2000);
    });
    
    promise.then(function() {
    	console.log('resolve');
    }, function(msg) {
    	console.log('reject', msg);
    });

    注意事項


    -どんなに大きなresolveとexecuteが呼び出されても、最終的には1つの結果しか呼び出されません。😾


    👇最初の解析のみを実行

    let promise = new Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve(1);
            resolve(2);
        }, 1000);
    });
    
    promise.then(function(msg) {
        console.log(msg);
    });

    👇最初の拒否のみを実行

    let promise = new Promise(function(resolve, reject) {
        setTimeout(function() {
    				reject(1);
            resolve(2);
            resolve(3);
        }, 1000);
    });
    
    promise.then(function(msg) {
        console.log('resolve', msg);
    }, function(msg) {
        console.log('reject', msg);
    });