es6의promise,async 함수

2329 단어
promise Promise 대상은 비동기적인 조작을 대표하는데 세 가지 상태가 있다. pending(진행 중),fulfilled(resolved)(성공)과rejected(실패)이다.
비동기적인 조작을 동기적인 조작의 절차로 표현할 수 있어 겹겹이 끼워 넣은 리셋 함수를 피할 수 있다.그 밖에 Promise 대상은 통일된 인터페이스를 제공하여 비동기적인 조작을 제어하는 것을 더욱 쉽게 한다.nn 방법 리셋에서 비동기 동작의 값을 가져오고promise 대상의resolved나rejected가 던진 대상에 의존해야 합니다
const promise = new Promise(function(resolve, reject) {
  if ( ){
    resolve(value);
  } else {
    reject(error);
  }
});
promise.then(function(value) {// resolve 
  // success
}, function(error) {// rejected 
  // failure
});
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, ms, 'done it you want do');// ,
  });
}

timeout(1000).then((value) => {
  console.log(value);
});

Promise가 새로 만들어지면 즉시 실행됩니다.
async 함수
함수가 비동기적이라는 것을 나타내는 데 사용되며, 정의된 함수는promise 대상을 되돌려줍니다.then 방법으로 리셋 함수를 추가할 수 있습니다. 
async function asyFun() {
    return '----';
}

asyFun().then(val => {
    console.log(val);// '----'
});
  async  ,return '----'; Promise.resolve('----'),  return Promise.resolve();

await는 async wait의 약자로 이해할 수 있다.await는 async 함수 내부에 나타나야 하며 단독으로 사용할 수 없습니다.
await 뒤에는 모든 JS 표현식과 함께 사용할 수 있습니다.await는 많은 종류의 물건을 기다릴 수 있다고 말하지만, 가장 중요한 의도는 Promise 대상의 상태가 Resolved되기를 기다리는 것이다.await의promise 대상이 비동기 함수 를 실행하고 promise의 해결을 초래할 경우 정상적인 표현식을 기다리면 즉시 실행합니다.
function sleep(second) {var oldDate=new Date();var newDate=0;
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('request done! ' + Math.random());
            newDate=new Date();
            console.log(newDate-oldDate);
        }, second);
    })
}

async function bugDemo() {
    await sleep(1000).then((value)=>{console.log(value)});
    await sleep(1000).then((value)=>{console.log(value)});
    await sleep(1000).then((value)=>{console.log(value)});
    console.log('clear the loading~');
}

bugDemo();
 :
Promise {}__proto__: Promise[[PromiseStatus]]: "resolved"[[PromiseValue]]: undefined
VM72:4 1012
VM72:4 1004
VM72:4 1016
VM72:13 clear the loading~

좋은 웹페이지 즐겨찾기