Tôi đang sử dụng một chức năng do thư viện của bên thứ ba cung cấp. Hàm này nhận hàm gọi lại làm tham số, nhưng tôi muốn đợi cuộc gọi lại này được gọi trước khi tiếp tục. Có cách nào tiêu chuẩn/được chấp nhận để thực hiện việc này không?chờ cho chức năng javascript không đồng bộ để trả lại
Trả lời
Tôi không chắc đây có phải là giải pháp khả thi cho bạn hay không nhưng bạn có thể đạt được kết quả mong muốn bằng cách chia nhỏ mã thành 2 chức năng. Giả sử đây là những gì bạn có ý định làm:
Về cơ bản đây là chức năng ban đầu của bạn:
function origFunc() {
codeBeforeThirdPartyFunc();
ThirdPartyFunc(oldCallBackFunc);
Wait();
codeAfterCallBackFunc();
}
Bạn có thể thay đổi dòng chảy mã với một cái gì đó như:
function newFunc() {
codeBeforeThirdPartyFunc();
ThirdPartyFunc(newCallBackFunc);
}
function newCallBackFunc() {
oldCallBackFunc();
codeAfterCallBackFunc();
}
Điều này sẽ loại bỏ sự chờ đợi vòng lặp. Và theo như tôi biết, chờ đợi bận rộn không hoạt động trong IE (bởi vì Chúa chỉ biết) ..
Tôi không biết liệu giải pháp của Sharad có hoạt động trong mọi trường hợp không (ví dụ: nếu bạn gọi hàm xa chuỗi mà bạn phải truyền dữ liệu dưới dạng biến thay vì tham số). Cùng một vấn đề với các biến toàn cầu. JavaScript không có khả năng "chờ".
Mặc dù tôi đã có một vấn đề tương tự và với jQuery, tôi đã kết thúc với một giải pháp loại MacGyver cung cấp cho bạn rất nhiều điều khiển khi các hàm javascript thực thi. Tôi chỉ đăng nó ở đây như là một câu trả lời cho câu hỏi của riêng tôi (nhưng tôi là câu trả lời chưa được kiểm tra - hãy tìm tên người dùng Emile của tôi): How to get a variable returned across multiple functions - Javascript/jQuery
Đây là phương pháp khác loading jQuery asynchronously, không phụ thuộc vào tập lệnh khác.
- 1. Chức năng giết có đồng bộ không?
- 2. JavaScript dường như không chờ đợi giá trị trả lại
- 3. cách làm cho chức năng đệ quy đồng bộ này không đồng bộ
- 4. Javascript trả lại không phá vỡ ra khỏi chức năng
- 5. Tắt chức năng mà không phải chờ trả lời (Python)
- 6. setTimeout trên chức năng không đồng bộ
- 7. Làm cách nào để 'kích hoạt và quên' chức năng JS? (không chờ trả lại)
- 8. Javascript chờ phản ứng chức năng
- 9. Hủy chức năng không đồng bộ tĩnh với thời gian chờ
- 10. chức năng đồng bộ jquery
- 11. jQuery có chức năng không đồng bộ như thế nào?
- 12. Chức năng ‘noreturn’ trả lại
- 13. Giá trị trả lại/gán không đồng bộ JavaScript với jQuery
- 14. Mẫu để gói một hàm JavaScript không đồng bộ để làm cho nó đồng bộ
- 15. Đang chờ phương thức không đồng bộ
- 16. chức năng không đồng bộ gọi C++ 0x
- 17. viết chức năng không đồng bộ với EventEmitter
- 18. Gọi một chức năng không đồng bộ trong một vòng lặp for trong JavaScript
- 19. Trả lại nội dung HTML dưới dạng chuỗi, cho trước URL. Chức năng Javascript
- 20. Một chức năng để trả lại một dấu hiệu
- 21. Gọi lại không đồng bộ đồng thời
- 22. Node.js - chờ cho nhiều cuộc gọi không đồng bộ
- 23. Không đồng bộ Javascript đệ quy
- 24. Không đồng bộ chờ tệp được tạo
- 25. Node.js - Chờ cho nhiều chức năng để hoàn thành
- 26. Hầu hết các chức năng của pythonic không trả lại?
- 27. Gửi dispatchEvent đồng bộ hóa hoặc chức năng không đồng bộ
- 28. trả lại một lambda không std :: chức năng
- 29. Tạo chức năng gọi lại Javascript?
- 30. Chức năng JavaScript định nghĩa lại
chỉ chấp nhận sự không đồng bộ. không cố gắng chống lại nó. – Anurag