Liq*_*uid 2 javascript performance promise typescript ecmascript-6
以下场景:一个函数获得一个具有一定长度的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;
Run Code Online (Sandbox Code Playgroud)
在这种情况下使用promises会更有效吗,因为所有for循环都可以同时工作吗?像这样,每个函数调用从上面的例子中执行一个for循环(并解析找到的值):
return new Promise((resolve) => {
this.findMatchingIDInArray1(array1)
.then(() => resolve(returnValue));
this.findMatchingIDInArray2(array2)
.then(() => resolve(returnValue));
this.findMatchingIDInArray3(array3)
.then(() => resolve(returnValue));
})
Run Code Online (Sandbox Code Playgroud)
哪种方式更具性能?有没有更好的方法来做到这一点?谢谢你的帮助!
在这种情况下使用promises会更有效吗,因为所有for循环都可以同时工作吗?
不,你误解了承诺的作用.它们是一种使处理异步代码更容易的工具.您的用例中没有异步代码,因此您无法在此处使用promises.Promise不会"制造"任何异步,甚至不支持多线程并行.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |