при отправке избыточной формы зацикливания аксиос пост для многозначных значений - PullRequest
0 голосов
/ 13 февраля 2019

введите код здесь у меня есть список формы флажков, которые я хочу в форме избыточного представления представить для отправки каждого значения в axios api, в следующем коде я показываю функцию отправки,

values ​​= {example1: true, example2:true, example3: false, example4: true} ожидаемый вывод в моем коде для печати каждого ключа, а затем отправки его, но innow его действия, как это будет делать цикл и консоль (example1, ...., example4) после этого вызовет сообщение4 раза за один и тот же ключ

submit(values) {
let data={
    "status":"INVITED",
    "buyerId": localStorage.getItem("companyId"),
    "joinType": "B",
    "supplierId": ""          
}
for (var key in values) {
    if (values[key]) {

        data.supplierId=key
       console.log(key)
       postWithAuth("networkmgtservice/api/networks",data).then((response) => {
        let status=response.data.statusCode;
        if(status="000"){
              console.log(key)
            $(`#${keyVar}`).html("Successfully sent")
        }
        else if(status=="999"){

            $(`#${keyVar}`).html(response.data.errorDescription)
        }
      })
        .catch((error) => {
            console.log(error)
        })
    }

1 Ответ

0 голосов
/ 13 февраля 2019

Не используйте var для объявления переменных цикла, когда внутри цикла вы выполняете асинхронную задачу, поскольку переменные, объявленные var, не поддерживают свое состояние и обновляются до последнего значения в цикле, поскольку цикл всегда быстреечем ваш вызов API, поэтому ваши переменные цикла будут сохранять только значение последнего элемента на вашей карте.Вместо этого используйте let для объявления переменной цикла, поскольку они поддерживают состояние.

submit(values) {
let data={
    "status":"INVITED",
    "buyerId": localStorage.getItem("companyId"),
    "joinType": "B",
    "supplierId": ""          
}
for (let key in values) {
    if (values[key]) {
       let requestData = {...data};
       requestData.supplierId=key
       console.log(key)
       postWithAuth("networkmgtservice/api/networks",requestData)
           .then((response) => {
                let status=response.data.statusCode;
                if(status="000"){
                    console.log(key)
                    $(`#${keyVar}`).html("Successfully sent")
                }
                else if(status=="999"){
                    $(`#${keyVar}`).html(response.data.errorDescription)
                }
           })
            .catch((error) => {
                 console.log(error)
             })
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...