Tôi đang bắt đầu ứng dụng GTK javascript đầu tiên của mình và tôi muốn tải xuống tệp và theo dõi tiến trình của nó bằng Gtk.ProgressBar. Các tài liệu duy nhất mà tôi có thể tìm thấy về các yêu cầu http là một số ví dụ mã ở đây:Sử dụng gjs, làm cách nào bạn có thể thực hiện yêu cầu http không đồng bộ để tải xuống tệp theo khối?
http://developer.gnome.org/gnome-devel-demos/unstable/weatherGeonames.js.html.en
Và một số tài liệu tham khảo Súp khó hiểu ở đây:
http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Soup.SessionAsync.html
Từ những gì tôi có thể thu thập, tôi có thể làm điều gì đó như thế này:
const Soup = imports.gi.Soup;
var _httpSession = new Soup.SessionAsync();
Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());
var request = Soup.Message.new('GET', url);
_httpSession.queue_message(request, function(_httpSession, message) {
print('download is done');
}
Chỉ có vẻ là một cuộc gọi lại khi quá trình tải xuống hoàn tất và tôi không thể tìm bất kỳ cách nào để đặt chức năng gọi lại cho bất kỳ sự kiện dữ liệu nào. Tôi có thể làm cái này như thế nào?
Đây là thực sự dễ dàng trong Node.js:
var req = http.request(url, function(res){
console.log('download starting');
res.on('data', function(chunk) {
console.log('got a chunk of '+chunk.length+' bytes');
});
});
req.end();