Skip to content

[Javascript] 异步演进

异步>callback>promise>async/await

起初需要异步执行。发明了回调callback,代码写起来遇到了回调地狱/厄运金字塔/无限缩进,代码向右扩展。发明promise,promise完美实现异步,代码向下扩展。but人的思维在判断代码运行到哪里了,还是不方便。那好吧,async/await出世,同步思维写异步代码。

你不能执行, 得等我执行完了,你才能执行

javascript
// a.js
function a() {}

// index_error.html
// 先加载完a.js
<script src="a.js"></script>
// 在执行a()
<script>
  a()
</script>

// 上面的代码是错误的,找不到a()

回调地狱,厄运金字塔

参考链接:

https://zh.javascript.info/callbacks

动态加载js

javascript
// a.js
src = a.js

function loadScript(src, callback) {
  // 创建一个script标签
  let script = document.createElement('script');
  // 设置src
  script.src = src;

  // 设置加载成功之后执行callback
  script.onload = () => callback(null, script);
  // 设置加载失败之后执行callback
  script.onerror = () => callback(new Error(`Script load error for ${src}`));

  // 脚本写人html dom
  document.head.append(script);
}