es6의promise,async 함수
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~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.