6.23 promise

promise

promise对象是一个保存还未发生事件的结果的一个容器
对promise进行拆解

  1. promise对象本质是一个构造函数
    通过new得到实例
const promsie = new Promise();
  1. promise接收一个函数作为参数
const promsie = new Promise(function() {});
  1. 该函数接收两个参数,resolve和reject
const promsie = new Promise(function(resolve,reject) {});
  1. resolve是成功时调用,并将操作的结果传递出去,reject是失败的调用,并将操作的结果传递出去
const promsie = new Promise(function(resolve,reject) {
   if (true) {
       resolve('ok')
   } else {
       reject('no'); 
   }
});
  1. Promise 实例生成以后,可以用 then 方法分别指定 resolved 状态和 rejected 状态的回调函数。then 方法可以接受两个回调函数作为参数。第一个成功,第二个失败(可省略)
promise.then(function(res) {
   console.log(res) // ok
},function(err) {
   console.log(err) // no
})
  • 方法
    all()(并行发送(一起发送请求))
    p1,p2,p3 Promise对象
  • 全部成功,返回p1,p2,p3返回的结果的数组
  • 只要有一个失败,则返回第一个被reject的值
Promise.all([p1,p2,p3]).then([a1,a2,a3] => {

})

race(),返回最快的请求结果,用法和all()相同

await

await等待一个promise对象(也可以是其他类型,但其他类型意义不大),他只能在异步函数async内部执行,
await是阻塞一个异步任务,await后面的代码都相当于微任务
返回值:是promise resolve之后的结果

await fn() //同步
fn1()  //微任务
fn2() //微任务

鸡肋的symbol

原始数据类型Symbol,独一无二的值

let s1 = Symbol();
let s2 = Symbol();
if (s1 === s2) //false

let s1 = Symbol('abc');
let s2 = Symbol('abc');
if (s1 === s2) //false

let s1 = Symbol.for('abc');
let s2 = Symbol.for('abc'); //for相当于登记标志
if (s1 === s2) //true
var id = Symbol();
var obj = {
 id: 'abc',
 [id]: 'hello' 
}
var id = Symbol('abc');//abc只是对Symbol进行描述,无实际意义

obj.id //abc
obj[‘id’] //abc
obj[id] //hello
以symbol定义的键,不能通过点访问,也不能通过循环,或者Object.keys(obj) 拿到键值(!!!真是太没用了)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值