Reactjs 多次执行handleClick

Reactjs 多次执行handleClick,reactjs,promise,Reactjs,Promise,我有一个按钮,当它被点击时,它会发出POST请求。在等待响应时,我有一个正在加载的动画。但是现在我希望这个按钮不只是发出一个post请求,我希望它一次点击就发出100个post请求 我的纽扣 <Form> <Form.Group> <Button variant='success' className='button' onClick={handleClick} id='create'&

我有一个按钮,当它被点击时,它会发出POST请求。在等待响应时,我有一个正在加载的动画。但是现在我希望这个按钮不只是发出一个post请求,我希望它一次点击就发出100个post请求

我的纽扣

          <Form>
              <Form.Group>
                <Button variant='success' className='button' onClick={handleClick} id='create'>Create Sales Order</Button>
              </Form.Group>
         </Form>
我的钩。在这个钩子中,我试图将createSalesOrder函数的内容放在一个循环中,但这个循环不起作用,因为它会中断加载动画(加载动画不会停止)

您可以使用等待一个或多个承诺完成。它返回一个“包装”所有其他承诺的单个承诺,这些承诺在所有承诺都已解决时将解决,或者在任何一个承诺被拒绝时立即拒绝

如果您想等待所有承诺完成,即使有些承诺被拒绝,那么使用


此外,请记住,承诺将以从服务器返回的任何顺序得到解决/拒绝,而不一定是以发送的顺序。这意味着,你所创建的第一个命令完全可以在中间的某个地方解决,你创建的最后一个命令将首先被解析,并且,如果你重复逻辑,它们解析的顺序将是不同的。

对不起,到底是什么问题?问题是你想多次点击按钮,但在创建所有订单之前都要加载它?你有没有试着用它取100次?嗨,汤姆,我编辑了原始问题。问题是我想点击按钮1次,让它完成100个post请求@Pawel不,我没有,老实说,我真的不明白如何承诺。所有的工作如果你只是想做更多的请求,只需在
createSalesOrder
func中设置一个循环,就像``异步函数createSalesOrder(){let newValue=[…value]for(let I=0;I<100;I++){const res wait axios.post(')newValue.push(res.data)}return newValue}``用另一个注释更新了我的答案。如果您需要按照顺序解决承诺,第二个承诺等待第一个承诺解决,等等,那么您需要一个非常不同的解决方案。
            <BeatLoader
              css={override}
              size={30}
              // size={"150px"} this also works
              color='#b51a82'
              loading={isLoading}
            />
 async function handleClick (event) {
  switch (event.target.id) {
    case 'create':
      setLoading(true)
      break

    case 'delete':
      // code for delete case
      break

    default:
      console.log('click didnt work')
  }
}
useEffect(() => {

  async function createSalesOrder () {
    const res = await axios.post('http://localhost:5000/')
    console.log(res)
    setValue([...value, res.data])
    return (res)
  }

  if (isLoading) {
    createSalesOrder().then(() => {
      setLoading(false)
    })
  }
}, [isLoading])
useEffect(() => {

  async function createSalesOrder () {
    const res = await axios.post('http://localhost:5000/')
    console.log(res)
    setValue([...value, res.data])
    return (res)
  }

  if (isLoading) {
    const finished = _ => setLoading(false);

    // Wait for all of the sales orders to finish
    Promise.all(
      // Create an array of 100 promises:

      // Quickly create an array with 100 entries
      [...Array(100).keys()].map(

        // For each entry, submit a request to create a sales order
        // and return a promise
        createSalesOrder
      )
    ).then(
      // When all of the promises have resolved, end your animation:
      finished,
      // Make sure you stop the animation even if an error occurred:
      finished
    );
  }
}, [isLoading])