JavaScript(Node.js)에서 sleep() 경고
17424 단어 Node.jsJavaScriptsleep
택지보: "슬립()이 없어요!"
JavaScript 쓰기
↓
"이 처리가 끝나면 1초 후에 다음 처리로 갈게요."
↓sleep(1);
↓ReferenceError: sleep is not defined
↓
(´・ω・‘)
나만 그런 적 있어?
Rubby, PHP, C++는 다 있지만 자바스크립트는 없다sleep()
.
가뜩이나 수요가 있는데 이뤄지지 않는 것은 어두운 곳에서 사용한다고 말하는 것과 같지만 그래도 사용하고 싶은 사람이 많아 투덜거리면 실속 있는 척하는 방법이 많다.
그래서 이번에 우리는 다양한 방법으로 실시sleep()
했고 자바스크립트가 한 달 정도 겪은 전문가의 방식으로 장점과 단점을 생각했다.
개막사
작업 환경
Node.js v7.6.0
sleep()의 동작
이번에는 대부분의 프로그래밍 언어에서 이루어진 sleep()
와 마찬가지로 '지정한 초를 정지하는 프로그램의 함수' 를 노드로 설정합니다.js로 실현하다.
매개변수에 밀리초 값을 지정합니다.(예: sleep(2000)
->2초 정지)
프로그램 내용
sleep(1000)
로 1초 일시 중지sleep(2000)
2초 일시 중지1. setTimeout()만 사용해서 써보기
우선 가장 정통적이다.
setTimeout() 버전
'use strict';
console.log('フラ');
setTimeout(() => {
console.log('イド');
setTimeout(() => {
console.log('チキーン!');
}, 2000);
}, 1000);
장점2. Date()로 써 보기
여기 블로그.에 소개되어 있습니다.
Date() 버전
'use strict';
console.log('フラ');
sleep(1000);
console.log('イド');
sleep(2000);
console.log('チキーン!');
function sleep(time) {
const d1 = new Date();
while (true) {
const d2 = new Date();
if (d2 - d1 > time) {
return;
}
}
}
장점3. Promise로만 써보기
ES6(ES2015)을 사용한 Promise 구현
Promise Edition(좋지 않은 예)
'use strict';
Promise.resolve()
.then(() => {
console.log('フラ');
sleep(1000)
.then(() => {
console.log('イド');
sleep(2000)
.then(() => {
console.log('チキーン!');
Promise.resolve();
})
})
});
function sleep(time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, time);
});
}
장점Promise Edition(좋은 예)
'use strict';
console.log('フラ');
sleep(1000).then(() => {
console.log('イド');
return sleep(2000);
}).then(() => {
console.log('チキーン!');
});
function sleep(time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, time);
});
}
4. ASync 모듈로 써보기
Node.js에서 인기 있는 async 모듈을 사용합니다.
async 모듈 버전
'use strict';
const async = require('async');
async.series([
(callback) => {
console.log('フラ');
callback(null);
},
(callback) => {
sleep(1000, () => callback(null));
},
(callback) => {
console.log('イド');
callback(null);
},
(callback) => {
sleep(2000, () => callback(null));
},
(callback) => {
console.log('チキーン!');
callback(null);
}
],
() => { }
);
function sleep(time, callback) {
setTimeout(() => {
callback(null);
}, time);
}
장점5. Promise와 async/await로 써보기
Node v7.6.0 ~ V8은 v5입니다.5야.( Change Log )
즉,
--harmony
없이도 async/await를 사용할 수 있다!잘 됐다!참조: Node.js v7.6.0 발매돼서 async/await 했어요.
Promiise+async/await 버전
'use strict';
!async () => {
console.log('フラ');
await sleep(1000);
console.log('イド');
await sleep(2000);
console.log('チキーン!');
}();
function sleep(time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, time);
});
}
장점5 개 해볼게요.
→ 간단하고 간단한 것을 만들고 싶을 때 어떤 브라우저를 사용해도 된다.
→ 동상이지만 이쪽은 동시에 쓸 수 있어서 추천합니다.
→ 음...아직 장점을 발견하지 못했다.
→ Node.js 한정.v7.6.0 이전에 움직였다면.
→ ES2017/v7.6.0 이후의 노드입니다.js를 사용할 수 있다면 망설임 없이 이걸 사용하세요.
ES2017의 규격은 엣지와 사파리에서도 사용할 수 있어 async/await로 쓸 수 있기를 간절히 기다리고 있다.
전적으로 문외한의 시각으로 보도된 것이니 지적이 있으면 잘 부탁드립니다...
Reference
이 문제에 관하여(JavaScript(Node.js)에서 sleep() 경고), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/albno273/items/c2d48fdcbf3a9a3434db텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)