new Promise((resolve, reject)=>{
setTimeout(function(){
resolve("成功!"); //代码正常执行!
}, 250);
}).then(res=>{
console.log(res)
})
Promise.all的用法
function runAsync1(){
var p = new Promise(function(resolve, reject){
console.log("1111")
resolve("aaaa")
});
return p;
}
function runAsync2(){
var p = new Promise(function(resolve, reject){
console.log("2222")
resolve("bbbb")
});
return p;
}
function runAsync3(){
var p = new Promise(function(resolve, reject){
console.log("3333")
resolve("cccc")
});
return p;
}
Promise.all([runAsync1(), runAsync2(), runAsync3()]) // all接收一个数组参数
.then(function(results){
console.log(results);
});
用Promise.all来执行,all接收一个数组参数,里面的值最终都算返回Promise对象。这样,三个异步操作的并行执行的,等到它们都执行完后才会进到then里面。那么,三个异步操作返回的数据哪里去了呢?都在then里面呢,all会把所有异步操作的结果放进一个数组中传给then,就是上面的results。所以上面代码的输出结果就是:
Promise.race的用法
function runAsync1(){
var p = new Promise(function(resolve, reject){
console.log("1111")
setTimeout(() => {resolve("aaaa")},1000)
});
return p;
}
function runAsync2(){
var p = new Promise(function(resolve, reject){
console.log("2222")
setTimeout(() => {resolve("bbbb")},500)
});
return p;
}
function runAsync3(){
var p = new Promise(function(resolve, reject){
console.log("333")
setTimeout(() => {resolve("ccc")},200)
});
return p;
}
Promise.race([runAsync1(), runAsync2(), runAsync3()])
.then(function(results){
console.log(results);
});
race也接收一个数组参数,race(比赛)。谁先执行完,就返回它的执行结果;其余未执行的,不再继续执行。