Javascript |在循环之后执行

问题描述 投票:0回答:3

我想在for循环操作完成后调用一个函数,请问方向吗?

这是我的代码:

       Function1: function () {
            var $this = this;
            $this.Action();
            var l = $this.list.length;
            for (var i = 0; i < l; i++) {                
            Function2(i)
            }

             function Function2(i){
              axios.post('/api', $this.list[i])          
              .catch(function(error) {
              console.log(error);
              });
             };                     
             },   

我想在$this.notAction()时打电话给i > l || i == l

javascript
3个回答
2
投票

使用异步/等待

Function1: async function () {
 var $this = this;
 $this.Action();
 var l = $this.list.length;
 for (var i = 0; i < l; i++) {                
   await Function2(i)
 }
 $this.notAction();

  async function Function2(i){
   try {
    await axios.post('/api', $this.list[i]);
   } catch (err) {
     console.log(err);
   }
  };                     
}

1
投票

仅检查最后一次调用的执行时间,因为i永远不会大于l。也可以在jQuery的POST调用中使用常规函数。

Function1: function () {
    var $this = this;
    $this.Action();
    var l = $this.list.length;
    for (var i = 0; i < l; i++) {                
        var p = Function2(i);
        p.done( function() {
           if ( i == ( l - 1 ) ) {
               $this.notAction();
           } 
        });
    }

    function Function2(i){
        return axios.post('/api', $this.list[i])          
            .catch(function(error) {
                console.log(error);
            });
    };                     
},

0
投票

类似的事情会起作用..

for (var i = 0; i <= l; i++) {    
if(i==l){
$this.notAction();
break;
}
Function2(i);
}
© www.soinside.com 2019 - 2024. All rights reserved.