两个异步任务同时向同一个url发送请求,谁先得到数据,另外的那个异步任务获得的数据就会被丢弃
//2s后输出“执行完成1” let p =new Promise(function(resolve){ setTimeout(function(){ resolve("hello"); console.log('执行完成1'); },2000); }); //1s后输出“执行完成2” let p1 =new Promise(function(resolve){ setTimeout(function(){ resolve("hello 2"); console.log('执行完成2'); },1000); }); //两个异步任务同时开始 let mixedPromisesArray = [p,p1]; let p3 = Promise.race(mixedPromisesArray).then(data=>{ //这里的data为hello 2,hello被丢弃 console.log(data); }); all()参数也是可迭代的对象,如数组
一般用于几个任务同时并行运行的情况
当某个任务失败,状态就会变为reject
//2s后输出“执行完成1” let p =new Promise(function(resolve){ setTimeout(function(){ resolve("hello"); console.log('执行完成1'); },2000); }); //1s后输出“执行完成2” let p1 =new Promise(function(resolve){ setTimeout(function(){ resolve("hello 2"); console.log('执行完成2'); },1000); }); //两个异步任务同时开始 let mixedPromisesArray = [p,p1]; let p3 = Promise.all(mixedPromisesArray).then(data=>{ //这里的data数组,存放着之前两个异步回调传的数据 console.log(data); }); 参考