-
The Node setTimeout() FunctionStudy/JavaScript 2020. 5. 15. 17:46
The Node setTimeout() Function
Knowing how to construct a promise is useful, but most of the time, knowing how to consume, or use, promises will be key. Rather than constructing promises, you’ll be handling Promise objects returned to you as the result of an asynchronous operation. These promises will start off pending but settle eventually.
Moving forward, we’ll be simulating this by providing you with functions that return promises which settle after some time. To accomplish this, we’ll be using setTimeout(). setTimeout() is a Node API (a comparable API is provided by web browsers) that uses callback functions to schedule tasks to be performed after a delay. setTimeout() has two parameters: a callback function and a delay in milliseconds.
const delayedHello = () => { console.log('Hi! This is an asynchronous greeting!'); }; setTimeout(delayedHello, 2000);
Here, we invoke setTimeout() with the callback function delayedHello() and 2000. In at least two seconds delayedHello() will be invoked. But why is it “at least” two seconds and not exactly two seconds?
This delay is performed asynchronously—the rest of our program won’t stop executing during the delay.
Asynchronous JavaScript uses something called the event-loop. After two seconds, delayedHello() is added to a line of code waiting to be run. Before it can run, any synchronous code from the program will run. Next, any code in front of it in the line will run. This means it might be more than two seconds before delayedHello() is actually executed.
Let’s look at how we’ll be using setTimeout() to construct asynchronous promises:
const returnPromiseFunction = () => { return new Promise((resolve, reject) => { setTimeout(( ) => {resolve('I resolved!')}, 1000); }); }; const prom = returnPromiseFunction();
In the example code, we invoked returnPromiseFunction() which returned a promise. We assigned that promise to the variable prom. Similar to the asynchronous promises you may encounter in production, prom will initially have a status of pending.
Let’s explore setTimeout() a bit more.
Promise를 어떻게 구성하는지 아는 것은 유용하지만,
대부분의 경우 Promise를 어떻게 소비하거나 사용하는지 아는 것이 핵심이 될 것이다.
Promise를 구성하기보다는 비동기적인 작업으로 인해 반환된 Promise 객체를 처리하십시오.
이 약속들은 미결로 시작되다가 결국 settle 될 것이다.
앞으로, 우리는 시간이 지나면 해결되는 promise를 return하는 함수를 당신에게 제공함으로써,
이것을 시뮬레이션 할 것이다.
이를 위해 우리는 setTimeout()을 사용한다.
setTimeout()은 콜백 기능을 사용하여 지연 후 수행할 작업을 예약하는 Node API(웹 브라우저에 의해 비교가능한 API가 제공됨) 로, setTimeout()에는 콜백기능과 지연시간(millisecondes)이라는 두 가지 매개변수가 있다.
const delayedHello = () => { console.log('Hi! This is an asynchronous greeting!'); }; setTimeout(delayedHello, 2000);
여기, 우리는 콜백함수 delayedHello()와 2000과 함께 setTimeout()을 호출한다.
적어도 2초 뒤에 delayedHello()는 호출될 것이다.
그러나 왜 "정확히" 2초가 아니라, "적어도" 2초인가?
이 delay는 비동기적으로 수행된다. 우리 프로그램의 나머지 부분은 delay중에 실행을 중단하지 않을 것이다.
비동기 자바스크립트는 event-loop라는 것을 사용한다.
2초 후, 실행대기중인 코드라인에 'delayedHello()'가 추가된다.
이것이 실행할 수 있기 전에, 프로그램의 모든 동기식 코드가 실행될 것이다.
다음에, 이것의 앞에 있는 어떤 코드도 그 줄에서 실행될 것이다.
이것은 'delayedHello()'가 실제로 실행되기 전에 적어도 2초이상이 걸릴 수 있다는 것을 의미한다.
setTimeout()을 사용하여 비동기 promise를 구축하는 방법에 대해 알아보자.
const returnPromiseFunction = () => { return new Promise((resolve, reject) => { setTimeout(( ) => {resolve('I resolved!')}, 1000); }); }; const prom = returnPromiseFunction();
예제 코드에서 우리는 promise를 return한 'returnPromiseFunction()' 함수를 호출했다.
우리는 그 promise를 변수 'prom'에 할당했다.
당신이 production에서 마주칠지도 모르는 비동기적인 promise와 마찬가지로,
'prom'은 처음에 보류상태를 갖게 될 것이다.
아래에서, setTimeout()에 대해 좀 더 탐색해보자.
console.log("This is the first line of code in app.js."); // Keep the line above as the first line of code // Write your code here: const usingSTO = () => { console.log('yeah! Coding is so fun!!'); } setTimeout(usingSTO, 2000) // Keep the line below as the last line of code: console.log("This is the last line of code in app.js.");
위와 같이 코드를 작성하면,
터미널에서
node app.js(파일명) 를 작성하고 엔터를 누르면,
This is the first line of code in app.js.
This is the last line of code in app.js.
위와 같이 먼저 출력되고,
2초뒤에
yeah! Coding is so fun! 이 출력된다.
출처:
https://www.codecademy.com/courses/introduction-to-javascript/lessons/promises/exercises/settimeout
);
'Study > JavaScript' 카테고리의 다른 글
The onFulfilled and onRejected Functions (0) 2020.05.15 Consuming Promises (0) 2020.05.15 Constructing a Promise Object (0) 2020.05.15 What is a Promise? (0) 2020.05.15 Introduction(promise) (0) 2020.05.15