使用队列处理异步问题

17 阅读1分钟
  let isProcessing = false;
  let queue = [];

  const processQueue = async () => {
    if (isProcessing || queue.length === 0) {
      return;
    }

    isProcessing = true;
    const _data = queue.shift();
    await dealLeadDialog(_data);
    isProcessing = false;

    // 继续处理队列中的下一个
    processQueue();
  };

  const enqueueDealLeadDialog = _data => {
    queue.push(_data);
    processQueue();
  };