Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
Send array row to row using axios requests in a for loop (One by one)

i want to send data in the form of row array, which is sent is "name" and "value" of each row, (1 row to next row)

below I save it to formData.append('data[kelompok_jenjang]', datas[i].name);

then post on the url with formData

data = [
    {
        "name": "Diploma",
        "indicator": 2,
        "value": 0
    },
    {
        "name": "Dokter",
        "indicator": 2,
        "value": 0
    },
    {
        "name": "Magister",
        "indicator": 2,
        "value": 0
    },
    {
        "name": "Profesi",
        "indicator": 2,
        "value": 0
    },
    {
        "name": "Sarjana",
        "indicator": 2,
        "value": 0
    },
    {
        "name": "Sarjana Terapan",
        "indicator": 2,
        "value": 0
    }
]
handleSaveTarget = async(e) =>{
      e.preventDefault();
      let data = this.data;
      if(data !== undefined){
        swal({
            title: "Are You Sure ?",
            text: "Save",
            icon: "warning",
            buttons: true,
            dangerMode: false,
        }).then((Agree) =>{
          if(Agree){
            var formData = new FormData();
            let sessiondata = JSON.parse(localStorage.getItem("sessiondata"));
            this.setState({display: true});
            let datas = this.state.ref_data;
            let arrayLength = datas.length;
            for(var i=0; i < arrayLength; i++){
              formData.append('data[id_sp]', sessiondata.i_idunit);
              formData.append('data[id_point]', 1);
              formData.append('data[kelompok_jenjang]', datas[i].name);
              formData.append('data[value]', datas[i].value);
              axios.post(AppConfig.SaveTarget, formData).then(res => {
                swal({
                  title: datas.name,
                  text: "Target Masa Studi Berhasil Disimpan.",
                  icon: "success",
                  dangerMode: false,
                })
              }).catch(err=>{
                swal({
                  title: datas.name,
                  text: "Target Masa Studi Gagal Disimpan.",
                  icon: "error",
                  dangerMode: false,
                })
              })
            }
          }
        })
      }else{
        swal({
          title: "Data Not Found",
          text: "Something's Wrong!",
          icon: "error",
          // buttons: true,
          dangerMode: false,
        })
      }
    }

is there a better way than this to pass data in array form one by one, thanks

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You need to make your function async to use the await keyword in order to wait each request to finish

swal({
  title: "Are You Sure ?",
  text: "Save",
  icon: "warning",
  buttons: true,
  dangerMode: false,
}).then(async (Agree) => {
  if (Agree) {
    // Your code
    for (var i = 0; i < arrayLength; i++) {
      const formData = new FormData();
      formData.append("data[id_sp]", sessiondata.i_idunit);
      formData.append("data[id_point]", 1);
      formData.append("data[kelompok_jenjang]", datas[i].name);
      formData.append("data[value]", datas[i].value);
      await axios
        .post(AppConfig.SaveTarget, formData)
        .then((res) => {
          swal({
            title: datas.name,
            text: "Target Masa Studi Berhasil Disimpan.",
            icon: "success",
            dangerMode: false,
          });
        })
        .catch((err) => {
          swal({
            title: datas.name,
            text: "Target Masa Studi Gagal Disimpan.",
            icon: "error",
            dangerMode: false,
          });
        });
    }
  }
});

If you don't like use async and await keywords, I suggest this solution instead

swal({
  title: "Are You Sure ?",
  text: "Save",
  icon: "warning",
  buttons: true,
  dangerMode: false,
}).then((Agree) => {
  if (Agree) {
    // Your code
    let i = 0;
    function send() {
      const formData = new FormData();
      formData.append("data[id_sp]", sessiondata.i_idunit);
      formData.append("data[id_point]", 1);
      formData.append("data[kelompok_jenjang]", datas[i].name);
      formData.append("data[value]", datas[i].value);
      axios
        .post(AppConfig.SaveTarget, formData)
        .then((res) => {
          swal({
            title: datas.name,
            text: "Target Masa Studi Berhasil Disimpan.",
            icon: "success",
            dangerMode: false,
          });
        })
        .catch((err) => {
          swal({
            title: datas.name,
            text: "Target Masa Studi Gagal Disimpan.",
            icon: "error",
            dangerMode: false,
          });
        })
        .finally(() => {
          i++;
          if (i < arrayLength) {
            send();
          }
        });
    }

    send();
  }
});
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda