遵循的场景:一个函数获取3个一定长度的数组,其中每个数组都需要进行迭代以找到匹配的对象。找到对象后,for循环会中断,并且不会调用下一个。在这种情况下,无法合并数组。基本上是这样的:

for (let i = 0; i < array1.length; i++) {
  if (array1[i].id == matchingID) {
    returnValue = array1[i];
    break;
  }
}
if (!returnValue) {
  for (let i = 0; i < array2.length; i++) {
    if (array2[i].id == matchingID) {
      returnValue = array2[i];
      break;
    }
  }
}
if (!returnValue) {
  for (let i = 0; i < array3.length; i++) {
    if (array3[i].id == matchingID) {
      returnValue = array3[i];
      break;
    }
  }
}
return returnValue;

在这种情况下,使用promise会更有效,因为那样可以同时处理所有for循环吗?像这样,在上面的示例中,每个函数调用都执行一个for循环(并解析找到的值):
return new Promise((resolve) => {
  this.findMatchingIDInArray1(array1)
    .then(() => resolve(returnValue));
  this.findMatchingIDInArray2(array2)
    .then(() => resolve(returnValue));
  this.findMatchingIDInArray3(array3)
    .then(() => resolve(returnValue));
})

哪种方式更有效?有更好的方法吗?谢谢你的帮助!

最佳答案



不,您误解了 promise 的含义。它们是使处理异步代码更容易的工具。用例中没有异步代码,因此您不能在此处使用Promise。 promise 不会使任何事物“异步”,甚至不会启用类似多线程的并行性。

10-04 16:08