Don’t make function within a loopの対処法

reotogashi 104views 更新:2015年6月25日

AWS Lambdaで

 for (index_id in instanceid) {
          var params = {
          InstanceId: instanceid[index_id], 
          Name: instancename[index_id] + time, 
          Description: instancename[index_id]+ time,
          };

          ec2.createImage(params, function(err, data) {
          if (err) {
              console.log(err, err.stack); 
          }else{
              console.log(data);
          }

          });

    }

のように書くと、

Don't make function within a loop

という警告が出ます。 問題なく動きますが、

  for (index_id in instanceid) {
          var params = {
          InstanceId: instanceid[index_id],
          Name: instancename[index_id] + time,
          Description: instancename[index_id]+ time,
          };

          ec2.createImage(params, resultCreateImage);
    }

var resultCreateImage = function(err, data) {
      if (err) {
              console.log(err, err.stack); 
          }else{
              console.log(data);
          }

          };

のように、for文の外で関数を定義することで、警告が無くなります。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません