promise:一种更优的异步编程统一方案;
promise 是一个普通对象,用来表示一个异步任务过后是成功还是失败
promise 代码
// promise 基本示例
const promise = new Promise(function(res,err){
res(1000) //成功
// err(new Error("err")) //失败
})
// promise.then(value=>{
// // 成功状态
// console.log(value) //输出1000
// },err=>{
// // 失败状态
// console.log(err) //打印 err 错误信息
// })
//改进一下 promise.then().then() 链式调用 最大优势, then()内部返回也是 promise 对象,但不是一个promise
promise.then(value=>{
return value+1000
})
.then(value=>{
console.log(value); // 2000
})
.catch(err=>{ //异常处理
console.log(err);
})
// promise 静态方法 resolse()
Promise.resolve("foo")
.then(value=>{
console.log(value); //foo
})
// promise 并行处理 all ,但是注意 要么都成功,一个失败都是失败,all 是等待全部任务结束才结束
Promise.all(["a","b"])
.then(value=>console.log(value)); // [a,b]
// promise.race() 多个任务,只会等待第一个结束的任务
const req = ['c','d']
const timeout = new Promise(function(res,err){
setTimeout(()=>{err(new Error("err"))},1000)
})
Promise.race([req,timeout])
.then(value=>console.log(value)) //[c,d]
.catch(err=>console.log(err))