Promise.all
当有一个Ajax请求时,他的参数需要另外两个甚至更多个请求都有返回值之后才能确定时,就需要用到Promise.all来帮助我们应对这个场景.
Promise.all接受一个Promise对象组成的数组作为参数,当这个数组中所有的Promise对象状态都变成resolve或者reject时,他才会调用then方法.
var url;
var url1;
function renderAll(){
return Promise.all([getJson(url), getUrl(url2)]);
}
renderAll().then(function(value){
console.log(value);
})
Promise.race
与Promise.all相似的是,Promise.race也是一个Promise对象组成的数组作为参数,不同的是,只要当数组中的其中一个Promise状态变成resolved或者rejected时,就可以调用.then方式,而传递给then方法的值也会有所不同.可以在浏览器中运行下面这个例子.
function renderRace() {
return new Promise.race([getJson(url), getJson(url1)]);
}
renderRace().then(function(value){
console.log(value);
})