遵循的场景:一个函数获取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 不会使任何事物“异步”,甚至不会启用类似多线程的并行性。