async和await

  1. async用于申明一个function是异步的,而await用于等待一个异步方法执行完成

    async

    async函数,真正意义上去解决异步回调的问题,同步流程表达异步操作,是Generator的语法糖 ```javascript async function foo(){ await 异步操作; await 异步操作; } //返回一个Promise对象,如果在函数中return一个直接量,async会把这个直接量通过Promise.resolve()封装成promise对象
  1. <a name="j7QCV"></a>
  2. ### await
  3. 1. async取代Generator函数的星号*,await取代Generator的yield
  4. 2. 不需要像Generator去调用next,遇到await等待,当前的异步操作完成就往下执行
  5. 3. await是个运算符,用于组成表达式,那await表达式的运算结果就是它等到的东西
  6. 4. 如果等到的不是一个promise对象,那await表达式的运算结果就是它等到的东西
  7. 5. 如果它等到的是promise对象,await会阻塞后面的代码,等着promise对象resolve,然后得到resolve的值,作为await表达式的结果
  8. 6. 如果promise执行结果为reject,则await无返回值,退出当前的async函数
  9. 7. await会等promise对象状态发生变化,如果是pending状态,就一直等,如果是resolved状态,就会自动执行下面的代码,如果是rejected状态,就会退出当前async函数
  10. 8. 执行async函数,返回值是一个promise对象时,promise对象状态,只有async函数所有代码全部执行完了才会变成成功状态
  11. ```javascript
  12. async function fn(){
  13. console.log("333");
  14. const re2 = await new Promise((resolve,reject) => {
  15. setTimeout(function(){
  16. console.log(222);
  17. reject("heng")
  18. },2000)
  19. })
  20. console.log(111);
  21. console.log(re2);
  22. return "hello";//返回成功结果值
  23. }
  24. const re = fn();
  25. re.catch((error)=>{console.log(error)})//解决await的reject状态报错
  26. re.then((data)=>{console.log(data)})//data是成功结果 函数返回值
  27. console.log(re);

nodejs

  1. nodejs就是运行在服务端的js
  2. 是一门后端语言
  3. 为前后端交互打基础,构建前端的开发环境 自动化构建工具
  4. mock数据,模拟数据,前后端分离,模拟假数据

    安装/运行

  5. 傻瓜安装,安装完打开cmd,输入node-v查看当前node版本

  6. 当前目录命令行运行 node xx文件名
  7. 文件按tab可补全,ctrl+c退出指令
  8. 每次修改js文件需要重新执行才能生效,可安装nodemon监视文件改动,自动重启

    配置本地服务器

    ```javascript const http = require(‘http’); //引入内置模块 let server = http.createServer((req,res)=>{ //设置编码格式 res.setHeader(‘Content-Type’,’text/html;charset=utf-8’); //req:request 请求 //res:response 返回 res.end(‘hello world’); //给浏览器返还一个hello world }) //通过http模块创建服务器

//设置端口号 server.listen(3939)

//如何访问? //localhost:端口号 //127.0.0.1:端口号 //ip地址:端口号 局域网内可以相互访问 ipconfig 查找自身ip

//一个端口只能启动一个服务 //netstat -ano查看端口的使用情况 查找pid

  1. <a name="CpdFj"></a>
  2. ## nodejs模块化
  3. 1. node中使用的是CommonJS规范来实现的模块化
  4. <a name="vzgm9"></a>
  5. ### 引入
  6. ```javascript
  7. require('./路径.js'); //导入
  8. module.exports //导出(多)
  9. exports
  1. let obj = require('./amodule');
  2. //自动查找目录下的文件
  3. //新建一个package.json文件修改 单入口
  4. //npm init 快速创建一个package.json文件
  5. //模块名称不能是中文
  1. //引入指定目录的模块 node_modules
  2. let bmodule = require('bmodule');
  1. //自动编译.json和.node文件后缀