array.push没有按顺序推送对象,而一些对象使用await执行操作。
创始人
2024-09-14 02:30:41
0

在JavaScript中,array.push方法会按顺序将元素添加到数组中。但是,当涉及到使用await执行操作时,由于await是异步操作,可能会导致对象的推送顺序不正确。

为了解决这个问题,可以使用Promise.all方法和Array.map方法来确保按顺序推送对象。下面是一个示例代码:

const array = [];
const promiseArray = []; // 用于存储 Promise 对象

function asyncOperation(item) {
  return new Promise((resolve) => {
    // 异步操作,这里简单延时 1 秒钟
    setTimeout(() => {
      resolve(item);
    }, 1000);
  });
}

async function pushObjectInOrder(objects) {
  for (const obj of objects) {
    const promise = asyncOperation(obj);
    promiseArray.push(promise);
  }

  // 等待所有 Promise 完成
  const results = await Promise.all(promiseArray);

  // 按顺序将对象推送到数组中
  results.forEach((result) => {
    array.push(result);
  });

  console.log(array);
}

pushObjectInOrder([{ name: 'Object 1' }, { name: 'Object 2' }, { name: 'Object 3' }]);

在上面的代码中,我们首先创建了一个空数组array和一个用于存储 Promise 对象的数组promiseArray。然后,我们定义了一个名为asyncOperation的异步操作函数,它返回一个 Promise 对象。

pushObjectInOrder函数中,我们使用for...of循环遍历传入的对象数组,并将每个对象传递给asyncOperation函数,返回的 Promise 对象存储在promiseArray中。

接下来,我们使用Promise.all方法等待所有的 Promise 对象完成,并将它们的结果存储在results数组中。最后,我们使用forEach方法按顺序将对象推送到array数组中,并输出结果。

这样做可以确保对象按照顺序推送到数组中,而不受异步操作的影响。

相关内容

热门资讯

透视揭露!wepoker辅助脚... 透视揭露!wepoker辅助脚本,wepoker私人局透视-确实是真的有辅助神器(哔哩哔哩)1、下载...
透视科普!wpk透视是真的假的... 透视科普!wpk透视是真的假的,wpk软件是正规的吗-真是存在有辅助软件(哔哩哔哩)1、金币登录送、...
透视解密!wepoker辅助真... 透视解密!wepoker辅助真的假的,We poker辅助器下载-真是真的有辅助神器(哔哩哔哩)亲,...
透视推荐!hhpoker辅助软... 透视推荐!hhpoker辅助软件,hhpoker德州有挂吗-果然是有辅助神器(哔哩哔哩)1、模拟器是...
透视科普!wpk透视是真的假的... 透视科普!wpk透视是真的假的,wpk辅助器是真的吗-真是是真的有辅助攻略(哔哩哔哩)1、有没有辅助...
透视曝光!wepoker可以透... 透视曝光!wepoker可以透视码,wejoker内置辅助-本来有辅助教程(哔哩哔哩)1、该软件可以...
透视揭露!wepoker破解工... 透视揭露!wepoker破解工具,wepoker怎么设置盖牌-本来一直总是有辅助方法(哔哩哔哩)1、...
透视有挂!有哪些免费的wpk作... 透视有挂!有哪些免费的wpk作弊码,wpk辅助器是真的吗-果然一直总是有辅助脚本(哔哩哔哩)1、公共...
透视关于!德扑圈透视挂,德普之... 透视关于!德扑圈透视挂,德普之星透视辅助-好像是真的有辅助软件(哔哩哔哩)脚本下载中分为三种模型:挂...
透视解密!德普辅助器怎么用,德... 透视解密!德普辅助器怎么用,德普之星透视-好像是有辅助app(哔哩哔哩)1、完成辅助器v3.3的残局...