Promise의 체인 작업

5678 단어
가장 간단한 Promise 예
function timeout(ms){
     return new Promise(function(resolve){
         setTimeout(resolve, ms); 
     })
}
timeout(1000).then(function(){
     console.log("done");
})

Promise와 콜백은 다음과 같습니다.
  • Promise는 코드 작성을 간소화하고 체인 조작이 있음
  • catch의 모든 에이전트가 비동기적으로 조작할 수 있는 오류,callback은 자신의 오류만 알 수 있음
  • 체인 조작
    여러 겹의 리셋 플러그인을 간소화하여'리셋 지옥'을 피하다
    이른바 회조지옥이란 겹겹이 끼워져 있어 읽기와 유지에 불리하다.
    setTimeout(function (name) {
      var catList = name + ',';
      setTimeout(function (name) {
        catList += name + ',';
        setTimeout(function (name) {
          catList += name + ',';
          setTimeout(function (name) {
            catList += name + ',';
            setTimeout(function (name) {
              catList += name;
              console.log(catList);
            }, 1, 'Lion');
          }, 1, 'Snow Leopard');
        }, 1, 'Lynx');
      }, 1, 'Jaguar');}, 1, 'Panther');

    이제 p1, p2, p3, p4를 한 번에 실행하고then 함수, 체인 조작으로
            p1().then(function () {
                console.log("    ");
                return p2();
            }).then(function () {
                console.log("    ");
                return p3();
            }).then(function () {
                console.log("    ");
                return p4();
            });
    
            var p1 = function(){
                return new Promise(function (resolve, reject) {
                    setTimeout(function () {
                        console.log('11111');
                        resolve("p1");
                    }, 1000)
                })
            };
            function p2 () {
                return new Promise(function (resolve, reject) {
                    setTimeout(function () {
                        console.log('22222');
                        resolve("p2")
                    }, 1000)
                })
            }
            function p3 () {
                return new Promise(function (resolve, reject) {
                    setTimeout(function () {
                        console.log('33333');
                        resolve("p3");
                    }, 1000);
                })
            }
            function p4 () {
                return new Promise(function (resolve, reject) {
                    setTimeout(function () {
                        console.log('44444');
                        resolve("p4");
                    }, 1000);
                })
            }

     
    전재 대상:https://www.cnblogs.com/hjqbit/p/6883703.html

    좋은 웹페이지 즐겨찾기