Как ждать весь пост-запрос - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть несколько почтовых запросов, например =>

for (var i = 0; i < this.state.selectedRowKeys.length; i++) {

      var rowid = this.state.selectedRowKeys[i];

      let savevalue = {
        id: rowid,            
      }
      queries.push(this.approve_leave(savevalue));
    }    


    Promise.all(queries).then(function (values) {
      console.log("done");         
    });

    this.selectData();
}

 approve_leave(savevalue) {       
    leave_api.leave_approve(savevalue).then(res => {         
      if (res.status === "fail") {           
        return false;
      }
      return true;
    })
  }

Я позвонил этому почтовому API-запросу, и после того, как все почтовые запросы выполнены, я просто повторно выбираю из базы данных и показываю запись обновления в таблице.

Но теперь, после того как я нажму кнопку «Сохранить», в таблице отображаются не refre sh данные, а если я перезагрузлю страницу, она отобразит refre sh data.

Promise.all ждет всех отправлять запросы, но

Для моей ситуации почему он не ожидает всех запросов и go select?

вот запрос API =>

export const leave_approve = leave => {
  return axios
    .put(
      "http://127.0.0.1:8000/api/leave/leave_approve/",
      { leave },
      {
        headers: {
          "Content-Type": "application/json"
        }
      }
    )
    .then(res => res.data)
    .catch(error => {
      throw error;
    });
};

1 Ответ

0 голосов
/ 07 апреля 2020

Я какое-то время попал в проблему с обещанием обратной связи ba c, и теперь я просто asyn-await для того, где все, что мне нужно сделать, выше.

Пример:

async function something(){ // Should declare async in the method declaration to use await
// Below code waits till it is finished executing because we used await 
    await axios
    .put(
      "http://127.0.0.1:8000/api/leave/leave_approve/",
      { leave },
      {
        headers: {
          "Content-Type": "application/json"
        }
      }
    )
    .then(res => res.data)
    .catch(error => {
      throw error;
    });
}

https://javascript.info/async-await

...