function*
trong JavaScript được sử dụng để định nghĩa một Generator Function, một loại hàm đặc biệt cho phép bạn tạm dừng và tiếp tục thực thi của hàm. Dưới đây là giải thích chi tiết về Generator Function, cách hoạt động và cách sử dụng nó:
function*
. Khi được gọi, nó không thực thi ngay mà trả về một iterator (bộ lặp) mà bạn có thể sử dụng để điều khiển dòng chảy của hàm.yield
để trả về một giá trị tạm thời, cho phép hàm tạm dừng và có thể tiếp tục tại điểm đã dừng.function* generatorFunction() { yield value1; yield value2; // ... }
Khi bạn gọi một Generator Function, nó sẽ không thực thi mã bên trong ngay lập tức. Thay vào đó, nó sẽ trả về một iterator. Bạn có thể gọi phương thức next()
trên iterator này để thực hiện mã bên trong hàm cho đến khi gặp từ khóa yield
. Mỗi lần gọi next()
, hàm sẽ tiếp tục từ nơi đã dừng và trả về giá trị tại yield
.
Dưới đây là một ví dụ đơn giản về cách sử dụng Generator Function:
function* countdown(n) { while (n > 0) { yield n; // Tạm dừng và trả về giá trị n n--; // Giảm n xuống 1 } return "Hoàn thành!"; } const generator = countdown(5); console.log(generator.next()); // { value: 5, done: false } console.log(generator.next()); // { value: 4, done: false } console.log(generator.next()); // { value: 3, done: false } console.log(generator.next()); // { value: 2, done: false } console.log(generator.next()); // { value: 1, done: false } console.log(generator.next()); // { value: undefined, done: true }
yield
nào), phương thức next()
sẽ trả về một đối tượng với value
là undefined
và done
là true
.yield
để tạo ra các giá trị theo từng bước và kiểm soát khi nào giá trị đó được tạo ra, điều này rất hữu ích cho việc xử lý các tác vụ phức tạp như bất đồng bộ (asynchronous processing).Generator Functions rất hữu ích trong nhiều trường hợp, chẳng hạn như:
function*
là một công cụ mạnh mẽ trong JavaScript, cho phép bạn viết mã với khả năng tạm dừng và tiếp tục, mang lại sự linh hoạt cao trong việc quản lý dòng chảy và xử lý dữ liệu.