Tôi đã cố gắng hiểu cách hoạt động của Mike Bostock's queue.js, nhưng tôi không thể xem cách hoạt động của nó. Phần tôi không hiểu là cách mã quản lý để tiếp tục thực hiện các cuộc gọi lại. Đặc biệt, tôi không chắc về phương thức pop()
(dòng 45). Từ sự hiểu biết của tôi, phương thức này có hàm chưa được xử lý, chưa được xử lý tiếp theo; nối thêm một cuộc gọi lại (có khả năng) bắt đầu hàm hoãn lại tiếp theo trong hàng đợi và thực thi khi hàm popped ngay lập tức kết thúc; sau đó cuối cùng thực hiện chức năng nói. Câu hỏi của tôi là: mã nào thực hiện gọi lại này?Hàng đợi.js hoạt động như thế nào?
5
A
Trả lời
10
Mỗi hàm hoãn lại không thực sự trả về bất kỳ thứ gì - chúng được dự kiến thực thi đối số cuối cùng của chúng dưới dạng gọi lại. Ví dụ, điều này sẽ không làm việc
var foo = function(i) {
console.log(i);
return i;
}
var finished = function(error, results) {
console.log(results);
}
queue(2)
.defer(foo, 1)
.defer(foo, 2)
.defer(foo, 3)
.defer(foo, 4)
.awaitAll(finished); // only prints "1" and "2", since foo() doesn't execute callbacks
Tuy nhiên, nếu chúng ta sửa đổi foo
để có một callback,
var foo = function(i, callback) {
console.log(i);
callback(null, i); // first argument is error reason, second is result
}
Sau đó, nó sẽ, như thực hiện các cuộc gọi lại gây queue
để tiếp tục.
+0
Ví dụ điển hình, thực sự đã giúp tôi – megatron77
2
Nếu tôi hiểu mã chính xác, queue.await()
và queue.awaitall()
đặt gọi lại trong biến ví dụ await
và sau đó điều này được thực hiện bởi notify()
.
Các vấn đề liên quan
- 1. Apache Cassandra hoạt động như thế nào?
- 2. GROUP BY hoạt động như thế nào?
- 3. Dịch Magento hoạt động như thế nào?
- 4. DataReader hoạt động như thế nào?
- 5. System.Threading.Monitor.Enter() hoạt động như thế nào?
- 6. LINQ - nó hoạt động như thế nào?
- 7. __iter__ hoạt động như thế nào?
- 8. [UIAlertView show] hoạt động như thế nào?
- 9. Traceroute hoạt động như thế nào?
- 10. ArrayAccess hoạt động như thế nào?
- 11. jQuerys $ .each() hoạt động như thế nào?
- 12. DisplacementMapFilter hoạt động như thế nào?
- 13. MenuItem.SHOW_AS_ACTION_IF_ROOM hoạt động như thế nào?
- 14. Haskell: TVar hoạt động như thế nào?
- 15. GetContentResolver() hoạt động như thế nào?
- 16. P6SPY hoạt động như thế nào?
- 17. Trò chuyện hoạt động như thế nào?
- 18. objc_setAssociatedObject hoạt động như thế nào?
- 19. Scanr hoạt động như thế nào? Haskell
- 20. Codename One hoạt động như thế nào?
- 21. PropertyChangedEventHandler hoạt động như thế nào?
- 22. ResolveProjectReferences hoạt động như thế nào?
- 23. PHP max_execution_time hoạt động như thế nào?
- 24. 'typeof' hoạt động như thế nào?
- 25. C# Events hoạt động như thế nào?
- 26. Nén MPEG4 hoạt động như thế nào?
- 27. gdb hoạt động như thế nào?
- 28. aspx.designer.cs nó hoạt động như thế nào?
- 29. Dropbox hoạt động như thế nào?
- 30. IDataErrorInfo hoạt động như thế nào?
Đó là một số mã rất kém nhận xét. –
@LightnessRacesinOrbit: Đó là một mã rất ngắn và súc tích. Tên biến là mô tả và chức năng của chúng được nhận xét. Tôi không thấy lý do nào để bình luận quá mức ... – Bergi
@ Bergi: Tôi chỉ yêu cầu, như, một hoặc hai. Mô tả về chức năng của từng chức năng. Câu hỏi của OP thể hiện sự cần thiết. –