首页 > 解决方案 > 为什么 Promise.all() 返回一个空数组?

问题描述

编辑:我在数组创建器中放置了一个console.log,就在它返回并且数组为空之前。我有一个类似的过程,可以创建一系列承诺并执行。关于为什么这个从 docuSignPromiseArrayCreator() 返回一个空数组的任何想法?

async function docuSignPromiseArrayCreator(res, conn, deal) {
  console.log("Promise Array Creator Fired");
  return new Promise((resolve, reject) => {
    let array = [];
    console.log(res);
    res.forEach(async (res, index) => {
      let attachments = await conn.sobject("Attachment").find({
        ParentId: res.Id,
      });
      let iaPromise = DocuSignDecisionHandler(attachments, deal, conn);
      array.push(iaPromise);
    });
    console.log(array);
    resolve(array);
    return;
  });
}

这是以不同方式(几乎)执行相同操作并起作用的功能。

async function AttachmentPromiseHandler(res, conn) {
  return new Promise(async (resolve, reject) => {
    let attachmentArray = [];
    await res.forEach(async (attachment) => {
      let name = JSON.stringify(attachment.Name);

      if (name.includes("LD") || name.includes("Line")) {
        let ld = downloadPromiseHandler(attachment.Id, attachment.Name, conn);
        attachmentArray.push(ld);
      }

      if (name.includes("Layout")) {
        let layout = downloadPromiseHandler(
          attachment.Id,
          attachment.Name,
          conn
        );
        attachmentArray.push(layout);
      }
    });

    let attachments = await Promise.all(attachmentArray).catch((error) =>
      reject(error)
    );
    resolve(attachments);
  });
}

标签: javascriptnode.jsasynchronousasync-awaitpromise

解决方案


推荐阅读