我正在尝试编写一个具有客户端和服务器端组件的 Google Apps 脚本。客户端组件显示进度条。客户端调用服务器端函数(异步调用),其进度必须显示在客户端进度栏中。现在,我想要的是能够根据服务器端功能的反馈来更新客户端进度条。这可能吗?
由于 JS 异步进行服务器端调用,因此我无法真正在客户端循环调用函数并更新进度条,从而产生了复杂性。
我当然可以将服务器端函数的执行分成多个步骤,从客户端一一调用,每次更新状态栏。但我想知道是否有更好的解决方案。有没有办法从服务器端调用客户端函数,并根据传递的参数更新进度条?或者有没有办法从服务器端访问客户端进度条对象并修改它?
我处理这个问题的方法是让一个中间人(现在向 Romain Vialard 提出这个想法)来处理进度:Firebase
HTML/客户端可以连接到您的 Firebase 帐户(它们是免费的!)并“监视”更改。
客户端代码可以在代码执行过程中更新数据库 - 这些更改会立即通过 Firebase 反馈到 HTML 页面。这样,您就可以更新进度条。
罗曼有一个小例子/描述here
我使用的代码:
//Connect to firebase
var fb = new Firebase("https://YOUR_DATABASE.firebaseio.com/");
//Grab the 'child' holding the progress info
var ref = fb.child('Progress');
//When the value changes
ref.on("value", function(data) {
if (data.val()) {
var perc = data.val() * 100;
document.getElementById("load").innerHTML = "<div class='determinate' style='width:" + perc + "%\'></div>";
}
});
在客户端,我使用Firebase 库更新进度:
var fb = FirebaseApp.getDatabaseByUrl("https://YOUR_DATABASE..firebaseio.com/");
var data = { "Progress": .25};
fb.updateData("/",data);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)