Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scheduling: setTimeout and setInterval #207

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

Using `setInterval`:
Sử dụng `setInterval`:

```js run
function printNumbers(from, to) {
Expand All @@ -18,7 +18,7 @@ function printNumbers(from, to) {
printNumbers(5, 10);
```

Using nested `setTimeout`:
Sử dụng `setTimeout` lồng nhau:


```js run
Expand All @@ -38,9 +38,9 @@ function printNumbers(from, to) {
printNumbers(5, 10);
```

Note that in both solutions, there is an initial delay before the first output. The function is called after `1000ms` the first time.
Lưu ý rằng trong cả hai giải pháp, có độ trễ ban đầu trước đầu ra đầu tiên. Hàm được gọi sau `1000ms` lần đầu tiên.

If we also want the function to run immediately, then we can add an additional call on a separate line, like this:
Nếu chúng ta cũng muốn hàm chạy ngay lập tức, thì chúng ta có thể thêm lệnh gọi bổ sung trên một dòng riêng, như sau:

```js run
function printNumbers(from, to) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ importance: 5

---

# Output every second
# Đầu ra mỗi giây

Write a function `printNumbers(from, to)` that outputs a number every second, starting from `from` and ending with `to`.
Viết hàm `printNumbers(from, to)` xuất ra một số mỗi giây, bắt đầu từ `from` và kết thúc bằng `to`.

Make two variants of the solution.
Thực hiện hai biến thể của giải pháp.

1. Using `setInterval`.
2. Using nested `setTimeout`.
1. Sử dụng `setInterval`.
2. Sử dụng `setTimeout` lồng nhau.
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@

Any `setTimeout` will run only after the current code has finished.
Bất kỳ `setTimeout` nào sẽ chỉ chạy sau khi mã hiện tại kết thúc.

The `i` will be the last one: `100000000`.
`i` sẽ là cái cuối cùng: `100000000`.

```js run
let i = 0;

setTimeout(() => alert(i), 100); // 100000000

// assume that the time to execute this function is >100ms
// giả sử rằng thời gian để chạy hàm này là >100 mili giây
for(let j = 0; j < 100000000; j++) {
i++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,25 @@ importance: 5

---

# What will setTimeout show?
# setTimeout sẽ hiển thị cái gì?

In the code below there's a `setTimeout` call scheduled, then a heavy calculation is run, that takes more than 100ms to finish.
Trong mã bên dưới có một cuộc gọi `setTimeout` được lên lịch, sau đó một phép tính nặng được chạy, mất hơn 100 mili giây để hoàn thành.

When will the scheduled function run?
Khi nào hàm được lên lịch sẽ chạy?

1. After the loop.
2. Before the loop.
3. In the beginning of the loop.
1. Sau vòng lặp.
2. Trước vòng lặp.
3. Ở đầu vòng lặp.


What is `alert` going to show?
`alert` sẽ hiển thị cái gì?

```js
let i = 0;

setTimeout(() => alert(i), 100); // ?

// assume that the time to execute this function is >100ms
// giả sử rằng thời gian để chạy hàm này là >100 mili giây
for(let j = 0; j < 100000000; j++) {
i++;
}
Expand Down
Loading