继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第18天 BAT大牛带你横扫初级前端JavaScript面试(第二版)

慕数据9484764
关注TA
已关注
手记 49
粉丝 3
获赞 2

学习课程名称:BAT大牛带你横扫初级前端JavaScript面试(第二版)
章节名称:异步(新版)
讲师姓名:双越


课程内容:

  1. 同步和异步的区别
  2. 异步的应用场景
  3. promise
  4. JS基本知识-总结

JS三座大山:

  1. 原型和原型链
  2. 作用域和闭包
  3. 单线程和异步

单线程和异步:
JS 是单线程语言,只能同时做一件事儿
浏览器和nodejs 已支持 JS 启动进程,如 Web Worker:但是并不能改变JS单线程的本质
JS和DOM渲染共用同一个线程,因为JS可修改DOM结构

异步为何产生:为了解决单线程带来的问题

在实际工作中,遇到等待(网络请求、定时任务)不能卡住,需要异步解决方案,解决等待问题,异步是基于回调(callback)函数形式调用的

异步和同步的区别:
异步:不会阻塞代码执行
同步:会阻塞代码执行

异步的应用场景:

  1. 网络请求
  2. 定时任务

针对异步的解决方案,ES6提出了Promise,其解决了回调地狱(callback hell)的问题,从传统的嵌套式往非嵌套式(管道式串联)转变。

手写Promise加载图片

function loadImg(src) {
  const p = new Promise((resolve, reject) => {
    const img = document.createElement("img");
    img.onload = () => {
      resolve(img);
    };
    img.onerror = () => {
      const err = new Error(`图片加载失败 ${src}`);
    };
    img.src = src;
  });
  return p;
}

const url = "图片的地址";

loadImg(url)
  .then((img) => {
    console.log(img.width);
    return img;
  })
  .then((img) => {
    console.log(img.height);
  })
  .catch((err) => console.log(err));

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP