Один из подходов, который я хотел бы сделать, - создать 3 массива.
let kingArray = [];
let arrayForProcess1 = [];
let arrayForProcess2 = [];
someProcessOneExecution().then(response => {
if (kingArray.length === 0) {
arrayForProcess1 = response;
} else {
doSomethingWithResponse(response);
}
});
someProcessTwoExecution().then(response => {
if (kingArray.length === 0) {
arrayForProcess2 = response;
} else {
doSomethingWithResponse(response);
}
});
function doSomethingWithResponse() {
// so something here..
}
Это не совсем то, что вы просили, но цикл событий javascript или стек вызовов будут выполнять их один за другим. Так как JS является однопоточным. Он будет ожидать разрешения этих обещаний, поскольку они являются базами ввода-вывода и по мере их разрешения. может быть process1
или process2
. Вы можете проверить их вручную, как в подходе выше, который не самый оптимальный.
Второй подход
В этом случае я хотел бы объединить эти два обещания и подождать, пока они будут решены одно за другим, и соответствующим образом обновить мой массив.
Мое личное мнение (мнение в 2 цента). Я бы никогда не попытался обновить один и тот же массив в одно и то же время, если в этом сценарии он используется, может быть, стратегию выполнения проблемы нужно переосмыслить снова.