整理下异步

Promise的三种状态:Pending(进行中),Fullfiled(完成)[resolve],Reject(失败),一旦状态改变就不会再变

先写一个简单的Promise

let a = new Promise(function(resolve,reject){
   setTimeout(()=>{
	doSomething()
	    if (/* 异步操作成功 */) {
        resolve(value);
    } else {
        reject(error);
    }
	},3000)
}).then(function(value){ console.log(value)})

为什么要用Promise? 避免"回调地狱",易读易写

执行顺序

let promise = new Promise(function(resolve, reject){
    console.log("1");
    resolve()
});
promise.then(() => console.log("2"));
console.log("3")

// 1
// 3
// 2

和计时器混用的情况

let promise = new Promise(function(resolve, reject){
    console.log("1");
    resolve();
});
setTimeout(()=>console.log("2"), 0);
promise.then(() => console.log("3"));
console.log("4");
// 1
// 4
// 3
// 2

Promise优先级大于setTImeout
Promise属于JavaScript引擎内部任务,而setTimeout则是浏览器API,而引擎内部任务优先级高于浏览器API任务

.then如果是一个Promise,就立即执行这个Promise

Promise 类有 .then() .catch() 和 .finally() 三个方法
.then() 简单说就是之后Promise之后干嘛
.catch()设定 Promise 的异常处理序列
.finally()就是最后一定会干的事情

在这里插入图片描述
resolve()和then的return可以向下传值

async await

async必定返回promise函数,
await命令后面是一个 Promise 对象,返回该对象的结果。
如果不是 Promise 对象,就直接返回对应的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值