为什么循环中的函数只工作一次?

Why function in a loop is working only once?

我正在使用 Google 应用脚本和 JQuery 开发进度条。 当我点击提交时,下面的代码 运行:

    var i=0;
    while (i<100){
      var prog=google.script.run.countTime();
      i+=prog;
      button.progressIncrement(i);
    }

进度条仅进给 10% 并停止执行。

countTime()函数不是很重要(暂时只有returns10):

function countTime(){
   return 10;
}

但如果我删除该功能,它会工作 (100%):

 while (i<100){
    var prog=10;
    i+=prog;
    button.progressIncrement(i);
 }

如果我删除循环并编写如下内容:

    var i=0;
    var prog=google.script.run.countTime();
    i+=prog;
    button.progressIncrement(i);
    var prog=google.script.run.countTime();
    i+=prog;
    button.progressIncrement(i);
    var prog=google.script.run.countTime();
    i+=prog;
    button.progressIncrement(i);
    var prog=google.script.run.countTime();
    i+=prog;
    button.progressIncrement(i);
    var prog=google.script.run.countTime();
    i+=prog;
    button.progressIncrement(i);
    (....)

进度条也可以达到 100%。

while 里面的函数有什么问题?

google.script.run() doesn't return a value, it runs asynchronously. You pass it a callback function to get a value back from it via withSuccessHandler()。例如在您的客户端代码中:

function onSuccess(valueFromServer) {

    // do something with valueFromServer
}

google.script.run.withSuccessHandler(onSuccess).doSomethingServerSide()

服务器端:

function doSomethingServerSide() {
    return valueFromServer
}