new Promise(
function (resolve, reject) {
// 一段耗时的异步操作
resolve('成功') // 数据处理完成
// reject('失败') // 数据处理出错
}
).then(
(res) => {console.log(res)}, // 成功
(err) => {console.log(err)} // 失败
).catch( err=> {
console.log(err)
})
resolve作用是,将Promise对象的状态从“未完成”变为“成功”,在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
reject作用是,将Promise对象的状态从“未完成”变为“失败”在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去;
Promise.all() 批量执行
function fun1(){
var ret = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
resolve('成功');
}, 1000);
});
return ret;
}
function fun2(){
var ret = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
resolve('成功');
}, 1000);
});
return ret;
}
Promise.all([fun1(), fun2()])
.then((result) =>
//两个一起才执行
console.log(result);
})
Promise.race([fun1, fun2])
.then(result=> {
//满足一个就执行
console.log(result)
})
使用场景:
例如我们要从远程的服务家在资源如果5000ms还没有加载过来我们就告知用户加载失败