【无标题】

promise 异步

Promise的构造函数接收一个参数:函数,并且这个函数需要传入两个参数:

resolve :异步操作执行成功后的回调函数

reject:异步操作执行失败后的回调函数

let p = new Promise((resolve, reject) => { //异步回调 setTimeout(() => { console.log('执行完成'); resolve('我是成功'); }, 2000); });

Promise.all() 方法接收一个 promise 的 iterable 类型(注:Array,Map,Set 都属于 ES6 的 iterable 类型)的输入,并且只返回一个实例,那个输入的所有 promise 的 resolve 回调的结果是一个数组。这个的 resolve 回调执行是在所有输入的 promise 的 resolve 回调都结束,或者输入的 iterable 里没有 promise 了的时候。它的 reject 回调执行时,只要任何一个输入的 promise 的 reject 回调执行或者输入不合法的 promise 就会立即抛出错误,并且 reject 的是第一个抛出的错误信息。

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});

promise.race()返回一个 promise,一旦迭代器中的某个 promise 解决或拒绝,返回的 promise 就会解决或拒绝。

const promise1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, 'one');
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'two');
});

Promise.race([promise1, promise2]).then((value) => {
  console.log(value);
  // Both resolve, but promise2 is faster
});

在写项目的时候,要注意很多细节,不然会导致性能很差,这里是一小部分建议:

1.减少DOM节点:DOM节点太多影响页面的渲染,尽量减少DOM节点。\n\n3、优化动画\n(1):尽量使用css3动画

(2):合理使用requestAnimationFrame动画代替setTimeout.

        2.优化高频事件:scroll、touchmove等事件可导致多次渲染。

(1):函数节流

(2):函数防抖

(3):增加响应变化的时间间隔:减少重绘次数

再有就是:减少重绘和回流,避免不必要的DOM操作,避免使用document.write,减少drawImage,尽量改变class而不是style,使用classList代替className

2、缓存DOM选择与计算:每次DOM选择都要计算和缓存

3、缓存.length的值:每次.length计算用一个变量保存值

4、尽量使用事件代理:避免批量绑定事件

5、尽量使用id选择器:id选择器选择元素是最快的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值