Promise(2)

5511 단어
Promise는 구조 함수로 자신에게all,reject,resolve 등 몇 가지 낯익은 방법이 있고 원형에then,catch 등 똑같이 낯익은 방법이 있다.그럼 new 하나.
var p = new Promise(function(resolve, reject){
    // 
    setTimeout(function(){
        console.log(' ');
        resolve(' ');
    }, 2000);
});

Promise의 구조 함수는 하나의 매개 변수를 수신하고 함수이며 두 개의 매개 변수를 전입합니다:resolve,reject는 각각 비동기 작업이 성공한 후의 리셋 함수와 비동기 작업이 실패한 후의 리셋 함수를 나타냅니다.사실 여기서'성공'과'실패'로 묘사하는 것은 정확하지 않다. 표준에 따르면resolve는 Promise의 상태를fullfiled로 하고,reject는 Promise의 상태를rejected로 한다.그러나 우리의 시작 단계에서는 먼저 이렇게 이해하고 나중에 개념을 세밀하게 연구할 수 있다.
위의 코드에서 우리는 set Timeout, 2초 후에'실행 완료'를 출력하고 Resolve 방법을 호출합니다.실행 코드는 실행 완료 후 2초 후에 출력됩니다.주의!나는 단지 new가 대상을 호출하지 않았을 뿐, 우리가 전송한 함수는 이미 실행되었다. 이것은 주의해야 할 세부 사항이다.그래서 우리가 Promise를 사용할 때는 보통 하나의 함수에 싸여 있고 필요할 때 이 함수 예를 실행합니다.
function runAsync(){
    var p = new Promise(function(resolve, reject){
        // 
        setTimeout(function(){
            console.log(' ');
            resolve(' ');
        }, 2000);
    });
    return p;            
}
runAsync()

우리가 포장한 함수 마지막에 프로미스 대상을 리턴합니다. 즉, 이 함수를 실행하면 프로미스 대상을 얻을 수 있습니다.예:
runAsync().then(function(data){
    console.log(data);
    // 
    //......
});


runAsync () 의 반환에서 then 방법을 직접 호출합니다. then은 매개 변수를 수신합니다. 함수입니다. 그리고 runAsync에서resolve를 호출할 때 전송된 매개 변수를 가져옵니다.이 코드를 실행하면 2초 후에'실행 완료'를 출력하고 이어서'무슨 데이터'를 출력합니다.then 안의 함수는 우리의 평상시 리셋 함수와 같은 뜻으로 runAsync라는 비동기적인 작업이 끝난 후에 실행될 수 있습니다.이것이 바로 Promise의 역할이다. 간단하게 말하면 원래의 리셋 쓰기 방법을 분리하여 비동기적인 조작이 끝난 후에 체인식으로 리셋 함수를 실행할 수 있다.

좋은 웹페이지 즐겨찾기