promise의 기본 사용법

3128 단어

프로미스가 왜 나와요?


1: 심층적인 리셋을 위해 더욱 간단해 보인다.겹겹이 끼워 넣은 리셋 함수를 피했다.

promise의 특징


1: 대상의 상태는 외부의 영향을 받지 않는다.Promise 객체는 Pending(진행 중), Resolved(완료됨, 일명 Fulfilled) 및 Rejected(실패) 등 세 가지 비동기식 작업을 나타냅니다.비동기 조작의 결과만 현재 어떤 상태인지 결정할 수 있으며, 그 어떠한 다른 조작도 이 상태를 바꿀 수 없다.이것도 프로미스라는 이름의 유래이다. 그의 영어 뜻은 바로'약속'이다. 다른 수단은 바꿀 수 없다는 뜻이다.2: 일단 상태가 바뀌면 다시 변하지 않는다. 언제든지 이 결과를 얻을 수 있다.Pending에서 Resolved로 변경하고 Pending에서 Rejected로 변경하는 것은 Pending에서 Rejected로 변경할 수 있는 두 가지 방법뿐입니다.이 두 가지 상황이 발생하기만 하면 상태는 응고되고 더 이상 변하지 않으며 이 결과를 계속 유지할 것이다.변경이 발생하더라도 프로미스 대상에 리셋 함수를 추가하면 바로 이 결과를 얻을 수 있습니다.이것은 이벤트 (Event) 와 완전히 다르다. 이벤트의 특징은 그것을 놓치면 다시 감청하면 결과를 얻을 수 없다는 것이다.

promise의 기본 사용 방법


1:



    
    Promise  
    
        window.onload = function() {
            function pms1() {
                return new Promise(function(resolve, reject) {
                    setTimeout(function() {
                        console.log(' 1');
                        resolve(' 1 ');
                    }, 2000);
                });
            }

            function pms2() {
                return new Promise(function(resolve, reject) {
                    setTimeout(function() {
                        console.log(' 2');
                        resolve(' 2 ');
                    }, 2000);
                });
            }

            function pms3() {
                return new Promise(function(resolve, reject) {
                    setTimeout(function() {
                        console.log(' 3');
                        resolve(' 3 ');
                    }, 2000);
                });
            }
            pms1().then(function(data) {
                    console.log(' 1 :' + data);
                    return pms2();
                })
                .then(function(data) {
                    console.log(' 2 :' + data);
                    return pms3();
                })
                .then(function(data) {
                    console.log(' 3 :' + data);
                    return ' ! !'
                }).then(function(data) {
                    console.log(data);
                });
        }
    








2: promise.all ()의 기본 구현all () 방법은 & & & 에 해당하며, 모든 함수가 실행된 후에야 then 함수를 실행할 수 있습니다.
  var p1 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 500, 'P1');
  });
  var p2 = new Promise(function (resolve, reject) {
    setTimeout(resolve, 600, 'P2');
  });//  p1 p2, then:
  Promise.all([p1, p2]).then(function (results) { 
    console.log(results); //  Array: ['P1', 'P2']
 });

3: promise.race()의 기본 구현.race () 방법은 그 중의 어떤 함수가 완성되면 then 함수를 실행합니다.
var p1 = new Promise(function (resolve, reject) {
  setTimeout(resolve, 500, 'P1');
});
var p2 = new Promise(function (resolve, reject) {
  setTimeout(resolve, 600, 'P2');
});
Promise.race([p1, p2]).then(function (result) { 
  console.log(result); // 'P1'
});

좋은 웹페이지 즐겨찾기