Имитируем многопоточное вычисление условий в операторе ИФ
(Имитируем, потому что, насколько я понимаю, это только на уровне логики программы тут у нас все идет параллельно и поэтому иногда первый промис быстрее второго, иногда наоборот, а на уровне исполнения - JS движок исполняет все в одной треде. Для того, чтобы была настоящая, честная много-поточность, можно использовать https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers, там действильно задачи будут распределяться по ядрам процессора равномерно).
Пример ниже запускается в Нодной консоли
(Имитируем, потому что, насколько я понимаю, это только на уровне логики программы тут у нас все идет параллельно и поэтому иногда первый промис быстрее второго, иногда наоборот, а на уровне исполнения - JS движок исполняет все в одной треде. Для того, чтобы была настоящая, честная много-поточность, можно использовать https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers, там действильно задачи будут распределяться по ядрам процессора равномерно).
Пример ниже запускается в Нодной консоли
var p1 = new Promise(function(resolve, reject) { setTimeout( resolve, Math.random() * 4000 + 1000, " One is done"); }); var p2 = new Promise(function(resolve, reject) { setTimeout( resolve, Math.random() * 4000 + 1000, " Two is done"); }); p1.then(function(a) {console.log(a);}); p2.then(function(a) {console.log(a);}); Promise.race([p1, p2]).then(function(value) {console.log("race complete: " + value);}); setTimeout(function() {console.log("Program quit\n");}, 6000)