Baseline Widely available *
ì ì setTimeout()
ë©ìëë ë§ë£ë í í¨ìë ì§ì í ì½ë ì¡°ê°ì í ë² ì¤ííë íì´ë¨¸ë¥¼ ì¤ì í©ëë¤.
setTimeout(code)
setTimeout(code, delay)
setTimeout(functionRef)
setTimeout(functionRef, delay)
setTimeout(functionRef, delay, param1)
setTimeout(functionRef, delay, param1, param2)
setTimeout(functionRef, delay, param1, param2, /* ⦠,*/ paramN)
매ê°ë³ì
functionRef
íì´ë¨¸ê° ë§ë£ë ë¤ ì¤íí function
ì
ëë¤.
code
í¨ì ëì 문ìì´ì ì§ì íë ëì²´ 구문ì¼ë¡, íì´ë¨¸ê° ë§ë£ë ë ì½ëë¡ ì»´íì¼ í ì¤íí©ëë¤. eval()
ì´ ë³´ì ì·¨ì½ì ì¸ ê²ê³¼ ê°ì ì´ì ë¡ ì¬ì©ì ê¶ì¥íì§ ììµëë¤.
delay
Optional
주ì´ì§ í¨ì ëë ì½ë를 ì¤íí기 ì ì 기ë¤ë¦´ ë°ë¦¬ì´ ë¨ì ìê°ì ëë¤. ìëµíê±°ë 0ì ì§ì í ê²½ì° "ì¦ì", ë ì ííë ë¤ì ì´ë²¤í¸ ì¬ì´í´ì ì¤ííë¤ë ë»ì ëë¤. ê·¸ë¬ë ì¤ì ì§ì° ìê°ë ìëíë ê²ë³´ë¤ ë 길 ì ììµëë¤. ìëì ì§ì° ìê°ì´ ì§ì í ê°ë³´ë¤ ë 긴 ì´ì 를 ì°¸ê³ íì¸ì.
param1
, â¦, paramN
Optional
functionRef
ì ì ë¬í ì¶ê° 매ê°ë³ìì
ëë¤.
ë°ííë timeoutID
ë ìì ì ìë¡ì setTimeout()
ì´ ìì±í íì´ë¨¸ë¥¼ ìë³í ë ì¬ì©í©ëë¤. ì´ ê°ì clearTimeout()
ì ì ë¬íë©´ íìììì ì·¨ìí ì ììµëë¤.
ê°ì ê°ì²´(ì°½ì´ë ì커)ìì ë°ë³µí´ í¸ì¶íë setTimeout()
ëë setInterval()
ë©ìëë ì ë ê°ì timeoutID
를 ì¬ì©íì§ ììµëë¤. ê·¸ë¬ë ë¤ë¥¸ ê°ì²´ë¼ë¦¬ë ë¤ë¥¸ ID íì ì¬ì©í©ëë¤.
clearTimeout()
ì¼ë¡ íìììì ì·¨ìí ì ììµëë¤.
ì´ë¤ í¨ì를 ëª ë°ë¦¬ì´ë§ë¤ ë°ë³µì ì¼ë¡ í¸ì¶í´ì¼ í íìê° ìì¼ë©´ setInterval()
ì ì¬ì©íì¸ì.
setTimeout()
ì ì§ì° ìê°(delay)ì ì«ìê° ìë ê°ì ì ê³µíë©´ ììì ì¸ íì
ë³íì íµí´ ì¡°ì©í ì«ìë¡ ë°ê¿ëë¤. ì를 ë¤ì´, ìë ì½ëì ê°ì´ ì§ì° ìê° ë§¤ê°ë³ìì ì«ì 1000
ëì 문ìì´ "1000"
ì ì못 ì¬ì©íëë¼ë ì ìì ì¼ë¡ ëìí©ëë¤. ì½ë ì¤í ì 문ìì´ì´ ì«ì 1000
ì¼ë¡ ë³íëë¯ë¡, ì½ë°±ì 1ì´ íì ì¤íë©ëë¤.
setTimeout(() => {
console.log("1ì´ ì§ì°.");
}, "1000");
íì§ë§ ëë¶ë¶ì ê²½ì°, ììì íì
ë³íì ììíì§ ëª»í ê²°ê³¼ë¡ ì´ì´ì§ëë¤. ì컨ë ìë ì½ëì 문ìì´ "1ì´"
ë ê²°ê³¼ì ì¼ë¡ ì«ì 0
ì¼ë¡ ë³íëë¯ë¡ ì½ë°±ì´ ì§ì° ìì´ ë°ë¡ ì¤íë©ëë¤.
setTimeout(() => {
console.log("1ì´ ì§ì°.");
}, "1ì´");
ê·¸ë¬ë ì§ì° ìê°ì 문ìì´ì ì¬ì©íì§ ë§ì¸ì. íì ì«ì를 ì§ì íì¸ì.
setTimeout(() => {
console.log("1ì´ ì§ì°.");
}, 1000);
ë¹ë기 í¨ìì ìì
í기
setTimeout()
ì ë¹ë기 í¨ìë¡ì, í¨ì ì¤íì ë¤ë¥¸ í¨ì í¸ì¶ì ë§ì§ ììµëë¤. ë¬ë¦¬ ë§íìë©´, setTimeout()
ì ì¬ì©í´ì ë¤ì í¨ì í¸ì¶ì "ì¼ìì ì§" í ìë ììµëë¤.
ë¤ì ìì 를 ì´í´ë³´ì¸ì.
setTimeout(() => {
console.log("첫 ë²ì§¸ ë©ìì§");
}, 5000);
setTimeout(() => {
console.log("ë ë²ì§¸ ë©ìì§");
}, 3000);
setTimeout(() => {
console.log("ì¸ ë²ì§¸ ë©ìì§");
}, 1000);
// ì½ì ì¶ë ¥:
// ì¸ ë²ì§¸ ë©ìì§
// ë ë²ì§¸ ë©ìì§
// 첫 ë²ì§¸ ë©ìì§
첫 ë²ì§¸ setTimeout()
í¸ì¶ì´ ë ë²ì§¸ í¸ì¶ ì ì 5ì´ì "ì ì§" 구ê°ì ë§ë¤ì§ ììì 주ìíì¸ì. ê·¸ ëì , ì ì½ëë 첫 í¨ì ì¤íì 5ì´ê° ë기íë ëìì ë ë²ì§¸ í¨ì ì¤íì 3ì´ê° ë기íê³ , ë¤ì ëìì ì¸ ë²ì§¸ í¨ìì ì¤íë 1ì´ê° ë기í©ëë¤. ê·¸ í 1ì´ê° ì§ëë©´ 첫 í¨ìì ë ë²ì§¸ í¨ì 모ë ìì§ íì´ë¨¸ê° ëëì§ ìì기 ë문ì ì¸ ë²ì§¸ í¨ì 먼ì ì¤íë©ëë¤. ê·¸ íì ë ë²ì§¸, ê·¸ë¦¬ê³ ë§ì§ë§ì¼ë¡ 첫 ë²ì§¸ í¨ìê° ê°ìì íì´ë¨¸ ë§ë£ í ì¤íë©ëë¤.
í¨ìì ì¤íì´ ìë£ë íì ë¤ë¥¸ í¨ì를 í¸ì¶íë êµ¬ì¡°ê° íìíë©´ íë¡ë¯¸ì¤ 문ì를 ì´í´ë³´ì¸ì.
"this" 문ì setTimeout()
ì ë©ìë를 ì§ì í ê²½ì°, ë´ë¶ì this
ê°ì´ ììê³¼ ë¤ë¥¼ ìë ììµëë¤. JavaScript ì°¸ê³ ììì ìì¸í ì¤ëª
ì ì°¸ê³ íì¸ì.
setTimeout()
ì´ ì¤ííë ì½ëë setTimeout()
ì í¸ì¶íë í¨ììë ë¤ë¥¸ ì¤í ë§¥ë½ìì í¸ì¶ë©ëë¤. í¸ì¶ í¨ìì this
í¤ìë ê°ì ì¤ì íë ì¼ë°ì ì¸ ê·ì¹ì´ ì¬ê¸°ìë ì ì©ëë©°, this
를 í¸ì¶ ì ì§ì íì§ë ììê³ bind
ë¡ ë°ì¸ë©íì§ë ìì ê²½ì° ê¸°ë³¸ ê°ì¸ window
(ëë global
) ê°ì²´ë¥¼ ê°ë¦¬í¤ê² ë©ëë¤. ë°ë¼ì setTimeout()
ì í¸ì¶í í¨ìì this
ê°ê³¼ë ë¤ë¥´ê² ëë ê²ì
ëë¤.
ë¤ì ì½ë를 ì´í´ë³´ì¸ì.
const myArray = ["zero", "one", "two"];
myArray.myMethod = function (sProperty) {
console.log(arguments.length > 0 ? this[sProperty] : this);
};
myArray.myMethod(); // "zero,one,two" 기ë¡
myArray.myMethod(1); // "one" 기ë¡
ìì ì½ëë myMethod
를 í¸ì¶í ë, í¸ì¶ë¡ ì¸í´ this
ê° myArray
ë¡ ì¤ì ë기 ë문ì ì ìì ì¼ë¡ ëìí©ëë¤. this[sProperty]
ê° myArray[sProperty]
ì ëì¼í¨ì íì¸íì¸ì. ê·¸ë¬ë, ë¤ìì ì½ëë ì´í´ë³´ì¸ì.
setTimeout(myArray.myMethod, 1.0 * 1000); // 1ì´ í "[object Window]" 기ë¡
setTimeout(myArray.myMethod, 1.5 * 1000, "1"); // 1.5ì´ í "undefined" 기ë¡
myArray.myMethod
를 setTimeout
ì ì ë¬íê³ , íììì ë§ë£ í í¸ì¶ ìì ì this
ê° ë°ë¡ ì¤ì ëì§ ìì¼ë¯ë¡ 기본 ê°ì¸ window
ê°ì²´ë¥¼ ê°ë¦¬í¤ê² ë¼ ì ìì ì¸ ëìì íì§ ììµëë¤.
forEach()
ì reduce()
ë± Array
ì ë©ìëìë ë¬ë¦¬ setTimeout()
ìë thisArg
를 ì¤ì í ì ìë ë°©ë² ëí ì¡´ì¬íì§ ììµëë¤. ê·¸ë¦¬ê³ call
ì ì¬ì©í´ this
를 ì¤ì íë ê² ìì ìëíì§ ììµëë¤.
setTimeout.call(myArray, myArray.myMethod, 2.0 * 1000); // ì¤ë¥
setTimeout.call(myArray, myArray.myMethod, 2.5 * 1000, 2); // ê°ì ì¤ë¥
í´ê²°ë² í¨ì ê°ì¸ê¸°
ì´ ë¬¸ì 를 í´ê²°í ë ì주 ì¬ì©íë ë°©ë² ì¤ íëë this
를 ì¤ì í ì ìëë¡ í¨ì를 ë¤ë¥¸ í¨ìë¡ ê°ì¸ë ê²ì
ëë¤.
setTimeout(function () {
myArray.myMethod();
}, 2.0 * 1000); // 2ì´ í "zero,one,two" 기ë¡
setTimeout(function () {
myArray.myMethod("1");
}, 2.5 * 1000); // 2.5ì´ í "one" 기ë¡
íì´í í¨ìë¡ ê°ì ìë ììµëë¤.
setTimeout(() => {
myArray.myMethod();
}, 2.0 * 1000); // 2ì´ í "zero,one,two" 기ë¡
setTimeout(() => {
myArray.myMethod("1");
}, 2.5 * 1000); // 2.5ì´ í "one" 기ë¡
bind() ì¬ì©í기
ë¤ë¥¸ ë°©ë²ì¼ë¡ë bind()
를 ì¬ì©í´ì 주ì´ì§ í¨ìì 모ë í¸ì¶ìì this
ê°ì ì¤ì íë ê²ì
ëë¤.
const myArray = ["zero", "one", "two"];
const myBoundMethod = function (sProperty) {
console.log(arguments.length > 0 ? this[sProperty] : this);
}.bind(myArray);
myBoundMethod(); // "zero,one,two" 기ë¡, thisê° myArrayì ë°ì¸ë©ë기 ë문
myBoundMethod(1); // "one" 기ë¡
setTimeout(myBoundMethod, 1.0 * 1000); // 1ì´ í, ë°ì¸ë©ì¼ë¡ ì¸í´ ì¬ì í "zero,one,two" 기ë¡
setTimeout(myBoundMethod, 1.5 * 1000, "1"); // 1.5ì´ í "one" 기ë¡
문ìì´ ë¦¬í°ë´ ì§ì í기
setTimeout()
ì í¨ì ëì 문ìì´ì ì§ì íë ê²ì eval()
ì ì¬ì©íë ê²ê³¼ ê°ì 문ì 를 ê°ì§ëë¤.
// íì§ ë§ì¸ì
setTimeout("console.log('Hello World!');", 500);
// ì´ë ê² ì¬ì©íì¸ì
setTimeout(function () {
console.log("Hello World!");
}, 500);
setTimeout()
ì ì ë¬í 문ìì´ì ì ì ë§¥ë½ìì íê°ëë¯ë¡, setTimeout()
í¸ì¶ ìì ì ì ê·¼ ê°ë¥íë ë¡ì»¬ ì¬ë³¼ì 문ìì´ íê° ìì ììë ì ê·¼ ë¶ê°ë¥í©ëë¤.
ì¬ë¬ê°ì§ ì´ì ë¡ ì§ì í ì§ì° ìê°ë³´ë¤ ì¤ì ì¤íì 걸린 ìê°ì´ ë 길ì´ì§ ì ììµëë¤. ì¬ê¸°ìë ê°ì¥ íí ìí©ë¤ì ì¤ëª íê² ìµëë¤.
ì¤ì²© íìììHTML íì¤ì ëª
ìë ê²ê³¼ ê°ì´, ë¸ë¼ì°ì ë setTimeout
í¸ì¶ì´ 5ë² ì´ì ì¤ì²©ë ê²½ì° 4msì ìµì ì§ì° ìê°ì ê°ì í©ëë¤.
ë¤ì ìì ìì ì´ ëìì íì¸í ì ììµëë¤. ì§ì° ìê°ì¼ë¡ 0
ì ì§ì í setTimeout
ì ì¬ë¬ ë² ì¤ì²©íê³ , ê°ê°ì ì½ë°±ì´ ì¤ì ë¡ í¸ì¶ë기ê¹ì§ì ì§ì° ìê°ì 기ë¡íëë°, 첫 ë¤ ë² ê¹ì§ë ëëµ 0msì ê·¼ì íì§ë§ ê·¸ ì´íë¡ë 4msì ê·¼ì í¨ì ë³¼ ì ììµëë¤.
<button id="run">ì¤í</button>
<table>
<thead>
<tr>
<th>ì´ì </th>
<th>íì¬</th>
<th>ì¤ì ì§ì°</th>
</tr>
</thead>
<tbody id="log"></tbody>
</table>
let last = 0;
let iterations = 10;
function timeout() {
// ì´ í¸ì¶ì ìê° ê¸°ë¡
logline(new Date().getMilliseconds());
// ëëì§ ììì¼ë©´ ë¤ì í¸ì¶ ìì½
if (iterations-- > 0) {
setTimeout(timeout, 0);
}
}
function run() {
// ê¸°ë¡ ì ê±°
const log = document.querySelector("#log");
while (log.lastElementChild) {
log.removeChild(log.lastElementChild);
}
// ë°ë³µ íìì ìì íìì¤í¬í 기ë¡
iterations = 10;
last = new Date().getMilliseconds();
// íììì ìì
setTimeout(timeout, 0);
}
function logline(now) {
// ì´ì íìì¤í¬í, ìë¡ì´ íìì¤í¬í, ë ìê°ì ê°ê²© 기ë¡
const tableBody = document.getElementById("log");
const logRow = tableBody.insertRow();
logRow.insertCell().textContent = last;
logRow.insertCell().textContent = now;
logRow.insertCell().textContent = now - last;
last = now;
}
document.querySelector("#run").addEventListener("click", run);
* {
font-family: monospace;
}
th,
td {
padding: 0 10px 0 10px;
text-align: center;
border: 1px solid;
}
table {
border-collapse: collapse;
margin-top: 10px;
}
ë¹íì± íì íììì
백그ë¼ì´ë íì¼ë¡ ì¸í ë¶í(ì ê·¸ë¡ ì¸í ë°°í°ë¦¬ ì¬ì©ë)를 ê²½ê°í기 ìí´, ë¸ë¼ì°ì ë ë¹íì± íììì ì§ì° ìê°ì ìµì ê°ì ê°ì í©ëë¤. ëí Web Audio API AudioContext
를 ì¬ì©í´ ì리를 ì¬ì ì¤ì¼ ë ì´ ìµì ê° ì ì±
ì´ ë©´ì ë ìë ììµëë¤.
ì íí ëìì ë¸ë¼ì°ì ì ë°ë¼ ë¤ë¦ ëë¤.
AudioContext
를 í¬í¨íë ê²½ì° ìµì ì§ì° ìê°ì ê°ì íì§ ììµëë¤.Firefoxë ì¶ì ì¤í¬ë¦½í¸ë¡ ì¸ìí ì¤í¬ë¦½í¸ì ëí´ ì¶ê° ì¤ë¡íë§ì ì ì©í©ëë¤. ì ì íì ê²½ì° ì¤ë¡íë§ì ìµì ì§ì° ìê°ì ì¬ì í 4msì§ë§, 백그ë¼ì´ë íììë íì´ì§ì 첫 ë¡ë ì´í 30ì´ê° ì§ëë©´ 10,000ms, ëë 10ì´ì ì¤ë¡íë§ì ì ì©í©ëë¤.
ì¶ì ë°©ì´ ë¬¸ììì ìì¸í ì 보를 ììë³´ì¸ì.
ë¦ì íìììíì´ì§, ì´ìì²´ì , ë¸ë¼ì°ì ê° ë¤ë¥¸ ìì
ì¼ë¡ ì¸í´ ë°ì ê²½ì° íìììì´ ììë³´ë¤ ë¦ê² ì¤íë ì ììµëë¤. í ê°ì§ ì¤ìí ì ì, setTimeout()
ì í¸ì¶í ì¤ë ëê° ì¢
ë£ë기 ì ìë ì§ì í í¨ì ëë ì½ë ì¡°ê°ì ì¤íí ì ìë¤ë ê²ì
ëë¤.
function foo() {
console.log("foo í¸ì¶");
}
setTimeout(foo, 0);
console.log("setTimeout ìë£");
ì ì½ëì ì½ì ê¸°ë¡ ê²°ê³¼ë ë¤ìê³¼ ê°ìµëë¤.
setTimeout ìë£ foo í¸ì¶
ì´ë ê² ëë ì´ì ë, setTimeout
ì 0ì ì§ì° ìê°ì¼ë¡ í¸ì¶í기ë íì¼ë, ì´ë ì§ì í í¨ì를 ë기ì´ì ë£ê³ ê°ë¥í ë°ë¡ ë¤ì 기íì ì¤ííë¼ë ê²ê³¼ ê°ì¼ë©° ì¦ì í¸ì¶íë¼ë ê²ì ìë기 ë문ì
ëë¤. ë기ì´ì í¨ì를 ì¤ííë ¤ë©´ íì¬ ì¤í ì¤ì¸ ì½ëê° ë°ëì 먼ì ìë£ë¼ì¼ íë¯ë¡, ì¤ì ì¤í ê²°ê³¼ë ììíë ê²ê³¼ ë¤ë¥¼ ì ììµëë¤.
Firefoxë íì¬ íì´ ë¡ë© ì¤ì¼ ë setTimeout()
íì´ë¨¸ ì¤íì ì§ì°ìíµëë¤. ì¤ì ì¤íì ë©ì¸ ì¤ë ëê° ë기 ìíì ë¤ì´ê°ê¸° ì ê¹ì§(window.requestIdleCallback()
ê³¼ ë¹ì·), ëë load
ì´ë²¤í¸ê° ë°ìí기 ì ê¹ì§ 미ë¤ì§ëë¤.
WebExtensionsììë setTimeout()
ì ì 뢰í ì ììµëë¤. íì¥ ê°ë°ìë setTimeout()
ëì alarms
API를 ì¬ì©í´ì¼ í©ëë¤.
ë¸ë¼ì°ì ë¤ì ë´ë¶ì ì¼ë¡ ì§ì° ìê°ì 32ë¹í¸ ë¶í¸ ìë ì ì ê°ì¼ë¡ ì ì¥í©ëë¤. ë°ë¼ì 2,147,483,647ms(ì½ 24.8ì¼)ë³´ë¤ í° ê°ì ì§ì íë©´ ì ì ì¤ë²íë¡ê° ë°ìí´ì íìììì´ ì¦ì ë§ë£ë©ëë¤.
ìì íììì ì¤ì ë° í´ì ë¤ì ìì ë ì¹ íì´ì§ì ë ê°ì ê°ë¨í ë²í¼ì ì¶ê°íê³ , ê°ê° setTimeout()
ê³¼ clearTimeout()
ì ì¤ííëë¡ í©ëë¤. 첫 ë²ì§¸ ë²í¼ì ë르면 2ì´ ë¤ ë©ìì§ê° ëíëë íìììì ì¤ì íê³ , clearTimeout()
ìì ì¬ì©í ì ìë íììì ID를 ì ì¥í©ëë¤. ë ë²ì§¸ ë²í¼ì ë르면 첫 ë²ì§¸ ë²í¼ì¼ë¡ ì¤ì í íìììì í´ì í ì ììµëë¤.
<button onclick="delayedMessage();">2ì´ ë¤ ë©ìì§ íì</button>
<button onclick="clearMessage();">ë©ìì§ê° ëíë기 ì ì ì·¨ì</button>
<div id="output"></div>
JavaScript
let timeoutID;
function setOutput(outputContent) {
document.querySelector("#output").textContent = outputContent;
}
function delayedMessage() {
setOutput("");
timeoutID = setTimeout(setOutput, 2 * 1000, "ë무 ëë ¤ì!");
}
function clearMessage() {
clearTimeout(timeoutID);
}
#output {
padding: 0.5rem 0;
}
ê²°ê³¼
clearTimeout()
ìì ë íì¸í´ë³´ì¸ì.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4