2016-03-02 48 views
0

只需与我联系es6并承诺并行创建承诺

有什么方法可以使用promise来并行执行多个任务吗?

我想一次启动多个操作,并使用Promise创建一个新的承诺,当它的所有输入承诺都解决后,这个承诺将被解决。

新承诺成功如果没有传入的承诺的失败;否则,它会因最后一个错误而失败。

我所知道的承诺是 - 如何创建承诺并链接它们。

let promise = new Promise(function(resolve, reject) { 
    // do a thing, possibly async, then… 

    if (/* everything turned out fine */) { 
    resolve("Successfully completed!"); 
    } 
    else { 
    reject(Error("Error occurred!")); 
    } 
}); 

promise.then(function(result) { 
    console.log(result); // "Successfully completed!" 
}, function(err) { 
    console.log(err); // Error: "Error occurred!" 
}); 
+0

JavaScript没有多线程。 – Grundy

+0

看看'Promise.all' - > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all – MarcoL

+0

也http://stackoverflow.com/questions/21799269 /排队承诺 – Pogrindis

回答

2

您正在寻找Promise.all

const p1 = Promise.resolve(1) 
const p2 = Promise.resolve(2) 
const p3 = Promise.resolve(3) 

const p4 = Promise.all([p1, p2, p3]) 

p4.then(values => console.log(values)) // [1, 2, 3]