如何遍历对象数组并使用react执行请求?

时间:2019-04-17 07:36:25

标签: reactjs

我必须对数据中的每个对象执行一个请求。

数据包含有关项目的详细信息,每个项目都用id进行区分,就像data_to_loop变量中一样,

private void intiView() {
    edt1 = findViewById(R.id.edt1);
    edt2 = findViewById(R.id.edt2);
    btnSum = findViewById(R.id.btnSum);
    txtAns=findViewById(R.id.txtAns);
    btnSum.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!edt1.getText().toString().isEmpty() && !edt2.getText().toString().isEmpty()) {
                sum = Integer.parseInt(edt1.getText().toString()) + Integer.parseInt(edt2.getText().toString());
                Toast.makeText(Main2Activity.this, "Sum of two nos: " + sum, Toast.LENGTH_LONG).show();
                txtAns.setText(""+sum);
            } else if (edt1.getText().toString().isEmpty()) {
                edt1.setError("Please enter no1 ");
            } else if (edt2.getText().toString().isEmpty()) {
                edt2.setError("Please enter no2 ");

            }
        }
    });
}

因此,以上数据可以具有任意数量的项目。因此应遍历每个项目并对其执行发布请求。该请求如下所示,

 let data_to_loop = [
   {
       attributes: 
       {
           after: {…}, 
           before: {…}, 
       }
           id: 71
           read_status: "unread"
    },
    {
        attributes: 
        {
               after: {…}, 
               before: {…}, 
        }
        id: 70
           read_status: "unread"
     },
     .
      .
     ......so on ,,,
]

我尝试了以下类似的方法,

within client file
export function clear_item(id, cancel) {
    return post(`items/${id}/clear`, cancel);
}

上面是硬编码的项目ID。这会清除该特定项目。

如何对data_to_loop变量中的所有项目执行此操作。

有人可以帮我这个忙吗?谢谢。

1 个答案:

答案 0 :(得分:4)

您可以在data_to_loop数组上使用Wildcard方法,并为数组中的每个对象创建一个请求。然后,您可以在产生的所有承诺数组上使用map,以在所有请求完成后添加一些逻辑。

Promise.all(
  data_to_loop.map(obj =>
    client
      .clear_item(obj.id)
      .then(request => console.log("request onclear", request))
  )
).then(() => console.log("all requests complete"));