https://github.com/danwrong/restler http://nodejs.org/javascript restler làm thế nào để chặn/chờ đợi vào một yêu cầu
để tải về một tập tin, tôi đang sử dụng restler từ nodejs trong một kịch bản phía máy chủ (không phải từ một trình duyệt web của khách hàng).
tôi có thể sử dụng cách async để bắn một sự kiện khi tải về hoàn tất, như sau:
rest = require('./restler');
rest.get('http://google.com').on('complete', function(result) {
if (result instanceof Error) {
sys.puts('Error: ' + result.message);
this.retry(5000); // try again after 5 sec
} else {
sys.puts(result);
}
});
nhưng tôi thích sử dụng một cách đồng bộ hóa thời gian này.
làm cách nào tôi có thể gọi và chặn/đợi cho đến khi nhận được phản hồi?
và làm thế nào để có được các dữ liệu hoặc lỗi sau
var req = rest.get('http://twaud.io/api/v1/users/danwrong.json');
// how to block/wait here until file is downloaded
if (req.response instanceof Error) { // this does not worn neither
...
} else {
...
}
Có lý do chính đáng để có phương pháp không đồng bộ và bạn sẽ chặn toàn bộ quá trình sẽ liên quan đến việc không sử dụng các yêu cầu/phản hồi khác. Luôn luôn có một cách để đi xung quanh nó và có sử dụng các phương pháp async thực tế. Xin bạn có thể mô tả lý do bạn muốn có một tình huống ngăn chặn, và có thể có một giải pháp tốt cho bạn để ở lại không đồng bộ với đáp ứng nhu cầu hợp lý của những thách thức của bạn. – moka
nó không phải là một kịch bản trong một trình duyệt của khách hàng. nó là một kịch bản đơn giản trong một máy chủ, chạy và kết thúc khi tải xuống đã sẵn sàng. tôi không cần bất kỳ async ở đây. –
Nó sẽ tải xuống và kích hoạt "hoàn thành" với đồng bộ hóa hoặc không đồng bộ, nó không có liên quan sau đó. Vì vậy, câu hỏi "tại sao bạn sẽ làm đồng bộ", nếu async là kết quả tương tự? Dù sao. 'restler' không có phương thức' sync' hoặc các phương thức cho phương thức. Bạn có thể tự thực hiện nó. – moka