promise (一)

一、promise含义

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
 

 二、promise方法

方法类型简介
then()原型方法可以处理thenable和catchable
catch()原型方法可以处理catchable
finally()原型方法用于不管promise最后状态如何,都会执行finally方法
resolve()静态方法常见promise成功的实例
all()静态方法

返回一个promise对象,当数组里面的所有promise对象的状态都为resolve,者新的promise对象的状态为resolve,反之有一个rejected状态,则新的promise对象的状态为resolve

三:promise的处理同步与异步之间的问题

将程序分为三种状态 pending resolved rejected。
pending 等待  处于unsettled阶段,表示事情还在等待最终的结果。
resolved 已处理  处于setteled阶段,表示事情已经出现结果,并且可以按照正常的逻辑进行下去的结果。
rejected 已拒绝 处于setteled阶段,表示事情已经出现结果,并且不可以按照正常的逻辑进行下去的结果。

把事情从pending状态推向resolved状态的过程中,可能会传递一些数据,这些数据为真实有效数据。
把事情从pending状态推向rejected状态的过程中,可能会传递一些数据,这些数据为错误信息

无论是在哪个阶段还是那个状态,都是不可逆。

当事情已经到达已决阶段后,通常用结果数据做一些后续处理,不同的已决结果,可能造成不同的后续处理。
resolved 后续处理表示为thenable
rejected 后续处理表示为catchable

后续处理可能有多个,因此会形成任务队列,这些后续处理会按照顺序当到达对应的状态时会依次执行。
 

总之,Promise 是一种处理异步代码(而不会陷入回调地狱)的方式。 

打印顺序 

 

 

// 导入fs文件管理模块
const { rejects } = require('assert')//自动编写
const fs = require('fs')
const { resolve } = require('path')//自动编写

// 构建一个promiss对象(注意大小写)
const AG = new Promise((resolve, reject) => {

    // 调用fs模块中的readFile方法,读取1.txt中的文本
    fs.readFile('./1.txt', (err, data) => {
        // 读取失败de情况
        if (!err) {
            // 调用resolve方法并传入读取的内容
            resolve(data)
        } else {
            reject(err)
        }
    })
})
//promise对象都会有两个方法,一个叫then,一个叫catch
//当这个promise对象内部的resolve被调用,就会执行then里的代码
// 当这个promise对象内部的reject被调用,就会执行catch.里的代码,
AG
    .then(res => {
        console.log('then调用:' + res);
    })
    .catch(err => {
        console.log('catch调用:' + err);
    })

注:后续接着本节内容补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值