promise 반전 함수 적용

1756 단어 ES6
저 희 는 ajax 를 자주 사용 하거나 파일 (fs. readFile, fs. writeFile) 을 읽 을 때 한 순간 에 실행 되 는 작업 이 아니 기 때문에 브 라 우 저 나 백 스테이지 Node 가 실행 코드 를 분석 할 때 순서대로 실 행 됩 니 다. 그 동안 상기 작업 은 시간 이 필요 하지만 js 파일 의 인용 처럼 코드 실행 을 차단 하 는 상황 이 있 지 않 습 니 다.그래서 그들 이 실행 할 때 ajax 와 파일 을 읽 는 코드 뒤에 다른 코드 가 실행 되 어야 합 니 다. ajax 와 파일 을 읽 고 쓰 는 코드 가 실행 되 는 데 시간 이 걸 릴 수 있 습 니 다. 오히려 그들의 뒤의 코드 가 그들 보다 먼저 실행 되 기 때문에 비동기 적 인 상황 이 발생 할 수 있 습 니 다. 그래서 우 리 는 ajax 와 읽 기와 쓰기 파일 을 비동기 작업 으로 이해 합 니 다.그러나 우 리 는 비동기 적 인 결 과 를 조작 해 야 합 니 다 (예 를 들 어 데이터 로 템 플 릿 을 렌 더 링 합 니 다). 그래서 우 리 는 비동기 적 인 조작 코드 에 리 셋 함 수 를 넣 어야 합 니 다. 비동기 코드 가 실 행 된 후에 우 리 는 리 셋 함수 로 비동기 코드 를 조작 하여 얻 은 결 과 를 얻 으 면 코드 의 내장 이 발생 합 니 다.
이런 플러그 인 은 사실 한 층 밖 에 없어 서 플러그 인 이 라 고 할 수 없 지만, 많은 경우 에 우 리 는 상술 한 비동기 코드 의 결 과 를 다시 비동기 로 다른 결 과 를 얻 은 다음 에 이전 비동기 결과 에 따라 다른 결 과 를 얻는다. 만약 에 세 번 의 데이터 결 과 를 얻 으 려 면 두 번 더 플러그 인 을 해 야 한다. 그러나 큰 항목 에서 다섯 번,8 번, 심지어 더 많은 것 이 있 을 수 있 습 니 다. 그러면 우 리 는 겹겹이 끼 워 넣 어야 합 니 다. 이렇게 여러 번 끼 워 넣 는 것 은 프로그래머 에 게 유지 코드 가 매우 불편 합 니 다. 가 독성 (사람의 눈 으로 읽 을 수 있 음) 으로 볼 때 매우 힘 들 기 때문에 이때 ES6 의 promise 함수 가 탄생 했 습 니 다. 그 는 전문 적 으로 이런 끼 워 넣 는 것 입 니 다.
var fs = require('fs');
function Pget (pathname){
    return new Promise(function (resoloved,rejected) {
        fs.readFile(pathname, 'utf8', function (error, data) {
            if (error) {
                rejected(error);
            } else {
                resoloved(data);
            }
        });
    });
}

Pget('./a.text')
    .then(function (data) {
        console.log(data);
        return Pget('./b.text');
    })
    .then(function (data) {
        console.log(data);
        return Pget('./c.text')
    })
    .then(function (data) {
        console.log(data);
    });



 

좋은 웹페이지 즐겨찾기