javascript - 在 Google Apps 脚本中从服务器端通信到客户端

标签 javascript asynchronous google-apps-script progress-bar

我正在尝试编写一个具有客户端和服务器端组件的 Google Apps 脚本。客户端组件显示进度条。客户端调用服务器端函数(异步调用),其进度必须显示在客户端进度条中。现在,我想要的是能够根据服务器端功能的反馈更新客户端进度条。这可能吗?

由于 JS 异步进行服务器端调用这一事实造成了复杂性,因此我无法真正在客户端调用函数和更新进度条的循环。

我当然可以将服务器端函数的执行分成多个步骤,从客户端一个一个地调用,每次更新状态栏。但我想知道是否有更好的解决方案。有没有办法从服务器端调用客户端函数,并根据传递的参数更新进度条?或者有没有办法从服务器端访问客户端进度条对象并修改它?

最佳答案

我处理这个问题的方法是让中间人(现在向 Romain Vialard 大声疾呼这个想法)处理进度:Firebase

HTML/客户端可以连接到您的 Firebase 帐户(它们是免费的!)并“观察”变化。

客户端代码可以在代码执行过程中更新数据库——这些更改会立即通过 Firebase 反馈到 HTML 页面。这样,您就可以更新进度条。

Romain 有一个小例子/描述 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 library更新进度:

var fb = FirebaseApp.getDatabaseByUrl("https://YOUR_DATABASE..firebaseio.com/");
var data = { "Progress": .25};
fb.updateData("/",data);

关于javascript - 在 Google Apps 脚本中从服务器端通信到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34246063/

相关文章:

javascript - 条件语句不起作用 - 数组

javascript - 在 jquery ajax 中既没有成功也没有错误

google-apps-script - Google Apps 脚本格式

javascript - 为 JSON 属性抛出 Nan 消息

javascript - 我可以用 JavaScript 替换\u00A0 和换行序列吗?

python-3.x - 使用 pytest、tornado 和 aiopg 进行单元测试失败,任何查询都失败

grails - Grails-异步 Controller Action

java - 异步处理 J2EE

javascript - 是否可以在 Google Apps 脚本中迭代 ENUM?

javascript - 我可以动态更新 Google 表单列表框的内容吗