【问题标题】:JQuery Invalid or unexpected token and wait for loop to finish firstJQuery 无效或意外令牌并等待循环首先完成
【发布时间】:2020-11-11 11:37:16
【问题描述】:

代码

for (var i = 0; i < 24; i++) {
   var block;
   if(i < 16) block = `<div class="wrapper"><div class="gap" id="imem_ingess${i}"></div><div class="container"><div class='title'>IMEM ingress ${i} Graph</div><div class="description">hey1</div></div><div class="pt-2 pb-2"></div><div class="chart-container" id="imem_ingess${i}_chart_container" style="position: relative; height:200rem; width:95vw; display: block;"><canvas id="imem_ingess${i}_chart" style="height: 30%; width: 30%;  display: block;"></canvas></div><div class="pt-4 pb-5"></div><div class="chart-container" id="imem_ingess${i}_chart_container2" style="position: relative; height:80rem; width:95vw; display: block;"><canvas id="imem_ingess${i}_chart2" style="height: 30%; width: 30%;  display: block;"></canvas></div></div>`;
   else block = `<div class="wrapper"><div class="gap" id="imem_egess${i-16}"></div><div class="container"><div class='title'>IMEM egress ${i-16} Graph</div><div class="description">hey2</div></div><div class="pt-2 pb-2"></div><div class="chart-container" id="imem_egess${i-16}_chart_container" style="position: relative; height:200rem; width:95vw; display: block;"><canvas id="imem_egess${i-16}_chart" style="height: 30%; width: 30%;  display: block;"></canvas></div><div class="pt-4 pb-5"></div><div class="chart-container" id="imem_egess${i-16}_chart_container2" style="position: relative; height:80rem; width:95vw; display: block;"><canvas id="imem_egess${i-16}_chart2" style="height: 30%; width: 30%;  display: block;"></canvas></div></div>`;

   $('#imem_statistics_page').append(block);​
}

问题

1) 此代码无法编译,并引发语法错误。
2) 我想等待循环完成,然后再执行剩余的代码。

提前致谢!

【问题讨论】:

  • 最后一个分号后有一个 U+200B (ZWSP)。
  • 啊修复了编译错误!谢谢sm!
  • Secondly... 你不需要做任何事情。您的代码将完成 for 循环,然后它会继续进行。

标签: jquery promise async-await unexpected-token


【解决方案1】:

首先,您有一个额外的u200b character。其次,你可以使用setTimeout函数。

setTimeout(function(){
// doing async stuff
}, 1000);

【讨论】:

    【解决方案2】:

    既然你的第一个问题已经解决了,这里是第二个答案,等待loop

    <script>
    
        const forLoop = async _ => {
            console.log('Start')
            //...
    
            for (var i = 0; i < 24; i++) {
                var block;
                if (i < 16) block = `<div class="wrapper"><div class="gap" id="imem_ingess${i}"></div><div class="container"><div class='title'>IMEM ingress ${i} Graph</div><div class="description">hey1</div></div><div class="pt-2 pb-2"></div><div class="chart-container" id="imem_ingess${i}_chart_container" style="position: relative; height:200rem; width:95vw; display: block;"><canvas id="imem_ingess${i}_chart" style="height: 30%; width: 30%;  display: block;"></canvas></div><div class="pt-4 pb-5"></div><div class="chart-container" id="imem_ingess${i}_chart_container2" style="position: relative; height:80rem; width:95vw; display: block;"><canvas id="imem_ingess${i}_chart2" style="height: 30%; width: 30%;  display: block;"></canvas></div></div>`;
                else block = `<div class="wrapper"><div class="gap" id="imem_egess${i - 16}"></div><div class="container"><div class='title'>IMEM egress ${i - 16} Graph</div><div class="description">hey2</div></div><div class="pt-2 pb-2"></div><div class="chart-container" id="imem_egess${i - 16}_chart_container" style="position: relative; height:200rem; width:95vw; display: block;"><canvas id="imem_egess${i - 16}_chart" style="height: 30%; width: 30%;  display: block;"></canvas></div><div class="pt-4 pb-5"></div><div class="chart-container" id="imem_egess${i - 16}_chart_container2" style="position: relative; height:80rem; width:95vw; display: block;"><canvas id="imem_egess${i - 16}_chart2" style="height: 30%; width: 30%;  display: block;"></canvas></div></div>`;
    
                await $('#imem_statistics_page').append(block);// will wait
            }
    
            //...
            console.log('End')
        }
    
        forLoop()
    
    </script>
    

    测试截图

    相关链接

    JavaScript async and await

    Await in a for loop

    【讨论】:

    • $('#imem_statistics_page').append(block); 不会返回promise 也不会返回apppendasync,所以你不能在这里使用await。 OP 的代码应该可以按预期工作而无需任何更改。
    • @Karan,你是对的。从提供的代码中,我看不到任何异步进程。这就是我使用 const forLoop = async _ => {} 发布代码的原因。并提供有关异步的链接。我们无法判断 OP 不需要与其余代码异步。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2014-07-19
    • 2014-07-25
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多