async和await + 宏队列和微队列 + Node开发 -- 暑假Day10

async和await

async

函数的返回值是promise对象
promise对象的结果是由async函数的返回值决定的,和then的差不多
在普通函数前面加上async,这样默认返回promise对象,相当于用return关键字代替了resolve方法发生错误用throw抛出错误,感觉就是promise的语法糖

await

右侧表达式一般为promise对象,但也可以是其他值
如果表达式是promise对象,await返回的结果 必须是promise成功的值,不是promise,返回值本身

await必须写在async函数中,但async函数中可以没有await
如果await的promise失败了,需要用try…catch来捕获处理

await关键字,只能出现在异步函数中,可以暂停异步函数的执行,等待promise对象返回结果之后再向下执行函数,可以在不使用then的情况下让多个异步函数按顺序执行,并且以return的方式返回

宏队列和微队列

在这里插入图片描述

js是单线程的,他在执行的时候会先执行所有的初始化同步代码,在准备执行宏任务之前要执行完所有的微任务

Node开发

Node是基于Chrome V8引擎代码运行环境

js的语法在这个里面都可以用

javascript在使用中存在两大问题,文件依赖和命名冲突

Node.js中模块化开发规范

Node.js规定一个javascript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
如果想要得到,可以在模块内部使用exports对象进行成员导出,可以用require方法导入其他模块

// 文件a里面的内容
const add = (x, y) => x + y;

exports.add = add;
// 文件b里面的内容
const a = require('./a.js');

console.log(a(1, 2));

结果如图
在这里插入图片描述

module.exports也可以用来将成员导出
exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准

系统模块

系统模块是运行环境提供的API,因为这些API都是以模块化的方式进行开发的,所以又称为Node运行环境提供发API

系统模块fs文件操作

fs:file system,文件操作系统

将fs require到文件里面之后,可以使用一些和文件相关的API

  • readFile(‘文件路径/文件名称’[,‘文件编码]’, callback)方法
    读取文件内容,有三个参数,第一个参数是带文件名称的文件路径,第二个参数是文件编码,第三个参数是一个callback回调函数,callback一般作用是返回文件的读取结果
    如果看到参数带有中括号,就说明这是一个可选参数
    回调函数的第一个参数一般为error,所以在node中的回调函数也称为错误优先的回调函数
    因为文件的读取需要时间,所以不能直接通过readFile的返回值得到读取结果,所以才要使用回调函数
const fs = require('fs');

fs.readFile('./a.js', 'utf-8', (error, doc) => {
    
    
    console.log(error);
    console.log(doc);
})

在这里插入图片描述

  • writeFile(‘文件路径/文件名称’, ‘数据’, callback)方法
    写入文件内容,如果写入的文件不存在,系统会自己创建那个文件
const fs = require('fs');
fs.writeFile('./demo.txt', '写入的内容', error => {
    
    
    if (error) {
    
    
        console.log(error);
        return ;
    }
    console.log('文件写入成功');
})

在这里插入图片描述

系统模块path路径操作

为什么要进行路径拼接?因为不同操作系统的路径分隔符不统一

  • join(‘路径’, ‘路径’, …)
    会将所有参数都进行拼接,所有的参数都是路径,返回值就直接返回了路径
const path = require('path');
const fpath = path.join('a', 'b', 'c');

console.log(fpath);

在这里插入图片描述

readFile是相对于命令行当前工作的工作目录,所以一般建议使用绝对路径,可以使用__dirname获取当前文件所在的绝对路径(前面有两个下划线)

require方法的相对路径就是相对于当前文件,所以可以直接使用相对路径

第三方模块

别人写好的,具有特定功能的,可以直接使用的模块,又名包

两种存在模式:

  1. 以js文件的形式存在,提供实现项目具体功能的API接口
  2. 以命令行工具形式存在,辅助项目开发

下载:npm install 模块名称
卸载:npm uninstall package 模块名称

  • nodemon
    是一个命令行工具,当文件发生保存工作的时候就会重新执行文件

  • nrm
    npm下载地址切换工具

猜你喜欢

转载自blog.csdn.net/weixin_50948265/article/details/119010396
今日推荐