Promise.all 설명서에서 알 수 있듯이 두 개 이상의 기능을 동시에 실행할 수 있으며 모두 완료 될 때까지 기다릴 수 있습니다. 내가 (크롬에서 실행) 가지고 있었는지, 그러나Javascript Promise.all fun functions 동시에 만드는 방법
function execute(id, max) {
console.log('starting ' + id);
console.time(id);
var sum = 0;
for(var i = 0; i < max; i ++) {
sum += i;
}
console.timeEnd(id);
return sum;
}
console.log("Declaring p1");
var p1 = Promise.resolve(() => execute("p1", 10000));
console.log("Declaring p2");
var p2 = Promise.resolve(() => execute("p2", 100000));
console.log("Calling Promise.all");
console.time("all");
Promise.all([p1, p2]).then((values) => console.log("Then: " + values));
console.timeEnd("all");
이 : 그래서 나는이 시도
Declaring p1
Declaring p2
Calling Promise.all
all: 0.599ms
Then:() => execute("p1", 10000),() => execute("p2", 100000)
그래서 분명히, then
방법을 가지고로서뿐만 아니라 기능도 실행되지 않았다 결과가 아닙니다.
function execute(id, max) {
console.log('starting ' + id);
console.time(id);
var sum = 0;
for(var i = 0; i < max; i ++) {
sum += i;
}
console.timeEnd(id);
return sum;
}
console.log("Calling Promise.all");
console.time("all");
Promise.all([() => execute("p1", 10000),() => execute("p2", 100000)])
.then((values) => console.log("Then: " + values));
console.timeEnd("all");
출력했다 :
Calling Promise.all
all: 0.274ms
Then:() => execute("p1", 10000),() => execute("p2", 100000)
그래서, 나는 내가 Promise.all
사용을 오해 생각 나는 원래 기능에 의해 약속을 교체하더라도
내가 같은 결과를 가지고 호출합니다. 약속을 사용하여 병렬 처리를 실행하려면 어떻게해야합니까?
감사합니다,
라파엘 아폰소
두 개의 ** 비동기 ** 기능을 동시에 실행할 수 있으며 그 결과를 기다리고 있습니다. 루프는 비동기 적이 지 않습니다. – Bergi
예를 들어 주시겠습니까? 함수 내에서 약속을 사용한다고 말하고 싶습니까? –
그는 약속이 비동기 적으로 코드를 실행하지 않는다고 말합니다. 비동기 코드를 실행합니다. 진정한 병렬 처리를 위해 [Web Worker] (https://developer.mozilla.org/en/docs/Web/API/Worker) 패밀리에서 뭔가를 찾고있을 수 있습니다. – Scott