.spread
.spread(
[function(any values...) fulfilledHandler] // promise 被resolve 后调用
) -> Promise
像调用 .then
一样,但是履行(fulfillment)值 必须 是一个数组,它被简化为履行状态处理程序的正式参数。
Promise.all([
fs.readFileAsync("file1.txt"),
fs.readFileAsync("file2.txt")
]).spread(function(file1text, file2text) {
if (file1text === file2text) {
console.log("files are equal");
}
else {
console.log("files are not equal");
}
});
当链式调用 .spread
时,返回一个 promise 数组也起作用:
Promise.delay(500).then(function() {
return [fs.readFileAsync("file1.txt"),
fs.readFileAsync("file2.txt")] ;
}).spread(function(file1text, file2text) {
if (file1text === file2text) {
console.log("files are equal");
}
else {
console.log("files are not equal");
}
});
注意,如果使用 ES6,以上可以使用 .then()
和解构替换:
Promise.delay(500).then(function() {
return [fs.readFileAsync("file1.txt"),
fs.readFileAsync("file2.txt")] ;
}).all().then(function([file1text, file2text]) {
if (file1text === file2text) {
console.log("files are equal");
}
else {
console.log("files are not equal");
}
});
注意,.spread()
隐式地进行 .all()
,但是 ES6 解构语法不会,因此在上面的代码中手动进行 .all()
调用。
如果您想要整合几个离散的并发 promise,请使用 Promise.join