Loop (Vòng lặp)
Đánh dấu đỉnh của vùng lặp. Mọi thứ giữa nó và Loop End cặp đôi được lặp lại.
Mục đích
Lặp một khối node — số lần cố định, khi điều kiện còn đúng, hoặc đến khi điều kiện thành đúng. Dùng để cày một việc N lần, thử đến khi thứ gì xuất hiện, hay xử lý danh sách.
Bạn vẽ chuỗi node thân trơn. Định tuyến vào, lặp và ra được sinh cho bạn — không dây vòng ngược nào phải vẽ, không port lặp nào trên canvas.
Khi nào dùng
- Lặp việc số lần biết trước.
- Tiếp tục khi tài nguyên còn (
While). - Thử lại đến khi đạt trạng thái (
Until). - Duyệt kèm biến đếm.
Khi nào không dùng
- Cho "làm đến khi đủ chỉ tiêu" đơn giản khi bộ đếm Variable cộng If rõ hơn và sống qua rẽ nhánh tốt hơn.
- Retry một node chập chờn — dùng retry policy của node đó.
- Poll chờ thứ gì hiện — Find Image với timeout dài đã tự poll.
Điều kiện
- Một Loop End cặp đôi. Vùng được kiểm lúc Save.
- Giá trị Max iterations.
- While/Until cần điều kiện boolean.
- Biến đếm, nếu dùng, phải khai trước dạng số.
Cách nó chạy
Mọi chế độ đều dừng ở Max iterations. Điều kiện While không bao giờ lật vẫn kết thúc.
Thiết lập
| Thiết lập | Kiểu | Khoảng | Ghi chú |
|---|---|---|---|
| Mode | lựa chọn | count, while, until | Bắt buộc |
| Max iterations | integer | 1–1000 | Bắt buộc. Trần an toàn mọi chế độ. Nhận {{biến}} |
| Condition | biểu thức | ≤ 1000 ký tự | Bắt buộc cho While/Until; phải boolean |
| Counter variable | đường dẫn biến | — | Tùy chọn; nhận chỉ số lượt, từ 0 |
While với Until
- While lặp khi điều kiện đúng — dừng khi nó thành sai.
- Until lặp đến khi điều kiện đúng — dừng khi nó thành đúng.
Chúng đối nhau. Chọn nhầm cho vòng lặp hoặc chạy một lượt hoặc chạy tới trần.
Max iterations nhận biến
maxIterations nhận tham chiếu {{biến}} nguyên chuỗi, nên số lượt cấp được theo lần chạy dưới dạng Flow Input:
Max iterations: {{items_per_trip}}
Đây là cách một flow đã lưu xử lý "3 mục" lẫn "10 mục" không cần sửa.
Loop End tổng hợp được
Loop End cặp đôi tùy chọn gom output một node thân qua các lượt và lộ ra ở lối ra vòng. Các chế độ gồm last, first, collectAll, unique, successOnly, failureOnly, successCount, failureCount, và iterationCount.
iterationCount đơn giản và hữu dụng nhất — "bao nhiêu lượt thực chạy".
Port
Loop là đánh dấu vùng, không phải node rẽ nhánh. Bạn nối chuỗi success trơn từ nó vào thân; định tuyến lặp và ra sinh lúc biên dịch.
| Port | Ghi chú |
|---|---|
| Success | Nối vào node thân đầu. Bắt buộc |
| Fatal | Mode, trần, hay điều kiện không-boolean sai. Không bao giờ được đi |
Dùng Break rời sớm và Continue nhảy lượt kế.
Ví dụ cơ bản
Lặp bước thu mười lần:
- Mode: Count
- Max iterations:
10
Ví dụ thực tế — vòng lặp giới hạn, độ dài theo biến
Hai điều kiện dừng, cả hai an toàn: vòng dừng ở số bên-gọi-cấp, hoặc sớm qua Break khi hết thứ để xử lý.
Ví dụ nâng cao — retry giới hạn kèm cờ
Loop làm vùng retry, dùng biến cờ ghi thành công:
Đây là hình cần với khi phải retry một nhóm node — retry cấp node chỉ phủ một node.
Best practices
- Đặt Max iterations là giới hạn thật, không phải mức tối đa. Nó là bảo hiểm chống vòng vô hạn.
- Cập nhật thứ điều kiện While/Until kiểm bên trong thân, kẻo luôn đụng trần.
- Dùng Break cho "hết việc" thay vì để vòng quay không.
- Khai biến đếm trước, dạng số.
- Gắn Max iterations vào Flow Input để flow tái dùng được.
- Canh
maxNodeExecutions. Vòng 200 lượt trên 12 node là 2400 lần thực thi — nâng rào chắn flow tương xứng.
Ghi chú hiệu năng
- Loop tự nó không tốn gì; chi phí thân nhân số lượt mới là thứ đáng kể.
- Wait trong vòng lặp là lỗi hiệu năng phổ biến nhất: 1500 ms × 200 lượt là năm phút không làm gì.
- Node phát hiện trong vòng chi phối chi phí. Cho chúng search region sát.
- Chế độ tổng hợp gom dữ liệu (
collectAll,unique) giữ giá trị theo lượt; ưu tiên count khi chỉ cần con số.
Ghi chú bộ nhớ
- Mỗi lượt ghi kết quả node vào ngữ cảnh, nên vòng dài phình
nodeResultsđều đặn. - Tổng hợp
collectAllgiữ một mục mỗi lượt — giới hạn bởi Max iterations, nhưng là bộ nhớ thật với vòng 1000 lượt. - Việc chạy rất dài, ưu tiên các lần chạy theo lịch lặp lại hơn một vòng khổng lồ.
Lỗi thường gặp
| Lỗi | Hậu quả | Cách sửa |
|---|---|---|
| Điều kiện While không được cập nh ật | Luôn chạy tới trần | Cập nhật biến kiểm trong thân |
| Lẫn While với Until | Chạy một lượt, hoặc tới trần | While = khi đúng; Until = đến khi đúng |
| Biến đếm chưa khai | Vòng lỗi | Khai dạng số trước |
| Thiếu Loop End | Lỗi kiểm lúc Save | Mỗi Loop cần cặp của nó |
| Trần để 1000 "cho chắc" | Che bug thật, đốt lượt thực thi | Đặt giới hạn thực tế |
Thân vòng vượt maxNodeExecutions | Chết giữa chừng | Nâng rào chắn flow |
Khắc phục sự cố
Vòng chạy đúng một lượt. Điều kiện Until đã đúng sẵn, hoặc While đã sai sẵn.
Vòng luôn chạy tới Max iterations. Điều kiện không bao giờ đổi — không gì trong thân cập nhật biến nó kiểm.
Lần chạy chết MAX_NODE_EXECUTIONS_EXCEEDED.
Lượt × cỡ thân vượt trần flow. Nâng trong flow settings.
Break không rời vòng. Break thuộc vòng bao trong cùng. Kiểm nó nằm vùng nào.
FAQ
Số lượt tối đa? 1000.
Số lượt lấy từ biến được không?
Được — maxIterations nhận {{bi ến}} nguyên chuỗi.
Có phải vẽ dây vòng ngược? Không. Nối chuỗi trơn từ Loop đến Loop End; định tuyến được sinh.
Lồng vòng được không? Được. Break và Continue áp cho vòng bao trong cùng.
Node liên quan
- Break — rời vòng sớm
- Continue — nhảy lượt kế
- Variable — bộ đếm và cờ
- If — điều kiện trong thân
- Sub Flow — thay thế sạch cho thân vòng khổng lồ
Trang liên quan
- Mô hình thực thi —
maxNodeExecutions - Biến và bộ nhớ