Promise语法与事件循环Event Loop

本文详细介绍了Promise的使用,包括Promise的创建、基本使用、特点,以及all和race方法。接着,文章深入讲解了ES6中的异步函数async和await的用法。此外,还阐述了JavaScript的执行原理,重点讨论了Event Loop、微任务和宏任务的概念及执行机制,帮助读者理解JavaScript中的异步执行流程。
摘要由CSDN通过智能技术生成

Promise介绍

Promise 一个 构造函数, 用于创建Promise对象

Promise对象:可以理解为一个处理异步操作的容器

Promise作用:解决回调地狱

回调地狱:异步回调 层层嵌套

//在回调函数中嵌套执行
//弊端 : 形成回调地狱(异步回调 层层嵌套,非常麻烦且不便于维护)
//读取文件A
const fs = require('fs')
fs.readFile("./data/a.txt", 'utf-8', (err, data) => {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        //A读取成功之后开始读取B
        fs.readFile("./data/b.txt", 'utf-8', (err, data) => {
            if (err) {
                console.log(err);
            } else {
                console.log(data);
                //B读取成功之后开始读取C
                fs.readFile("./data/c.txt", 'utf-8', (err, data) => {
                    if (err) {
                        console.log(err);
                    } else {
                        console.log(data);
                    }
                });
            }
        });
    }
});

Promise基本使用

  • 1.实例化Promise对象

    • 作用: 将异步操作代码 放入 Promise中

      • resolve:异步操作 成功状态

      • reject : 异步操作 失败状态

    • new Promise((resolve,reject)=>{ 你的异步操作 })

  • 2.调用then()方法处理异步操作结果

    • promise对象.then((data)=>{ 处理成功数据 },(err)=>{ 处理失败信息 });

/* 
1.Promise是一个构造函数 , 返回一个Promise对象
2.使用流程
(1)实例化Promise对象 : 将异步操作放入Promise中
(2)调用then() 方法: 处理异步操作结果
*/
const fs = require('fs')

//1.创建promise实例对象
const p1 = new Promise((resolve, reject) => {
    //异步操作
    fs.readFile('./data/a.txt', 'utf8', (err, data) => {
        if (err) {
            /* 
            (1)异步操作失败,则执行 reject()
            (2)reject会把把promise对象的状态从 pending进行中 改为 rejected失败
            (3)该方法本质是调用 then() 中的第二个方法
            */
            reject(err)
        } else {
            /* 
            (1)异步操作成功,则执行 resolve()
            (2)resolve会把把promise对象的状态从 pending进行中 改为 fulfilled成功
            (3)该方法本质是调用 then() 中的第一个方法
            */
            resolve(data)
        }
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值