前段进阶小书

深入理解javascript中的事件循环event-loop
JavaScript 运行机制详解:再谈Event Loop 阮一峰
带你彻底弄懂Event Loop

Object.creact()
理解原型链--下图
理解原型链
Js实现new关键字 实现new关键字2
JavaScript this原理-阮一峰
理解引用类型和基本类型的区别以及深浅拷贝
JavaScript 对象属性底层原理
基本类型、引用类型、基本包装类型和单体内置对象
理解async函数
typeof和instanceof的区别
类型转换和隐式类型转换
实现继承的几种方式
理解JavaScript的作用域和作用域链
理解JavaScript 中的执行上下文和执行栈等 内存系列
学习JavaScript闭包 阮一峰

promise串行:

首先理解promise:廖雪峰promiseES6promise
基本用法:首先new一个Promise,接受一个函数作为参数,该函数有两个参数resolve和reject

const promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

promise.then(function(value) {
  // success
}, function(error) {
  // failure
});

廖雪峰:
Promise还可以做更多的事情,比如,有若干个异步任务,需要先做任务1,如果成功后再做任务2,任何任务失败则不再继续并执行错误处理函数。
串行执行这样的异步任务,不用Promise需要写一层一层的嵌套代码。有了Promise,我们只需要简单地写:

job1.then(job2).then(job3).catch(handleError);

function delay(time) {
 return new Promise((resolve, reject) => {
   console.log(`wait ${time}s`)
   setTimeout(() => {
     console.log('execute');
     resolve()
   }, time * 1000)
 })
}
const arr = [3, 4, 5];

1.async+循环
 async function () {
   for (const v of arr) {
     await delay(v)
   }
 }
2.普通循环
let p = Promise.resolve()
 for (const i of arr) {
  p = p.then(() => delay(i))
}

harden
56 声望1 粉丝

前端菜鸟