JavaScript进阶之Ajax的问题和什么是promise

2023-01-22 0 1,104

后端USB初始化的三种形式 ,有原生植物ajax ,如前所述jQuery的ajax ,fetch ,axios ,原生植物ajax的基本上原理和基本上采用他们早已如是说过了 ,上面来看一看如前所述jQuery的ajax的利用和Ajax的难题

如前所述jQuery的Ajax

jQuery为他们提供更多了更强悍的再进一步的原生植物AjaxPCB

它的用语:透过jQuery.ajax([settings])( $.ajax({}) )来实用性形式发动Ajax允诺

JavaScript进阶之Ajax的问题和什么是promisejQuery为他们提供更多Ajax方式

url :USB门牌号 ,前台给他们提供更多的USB门牌号

表达式:假如USB初始化获得成功会有获得成功的反弹success表达式里头可写获得成功调阅到USB后的销售业务方式论 ,和允诺出现严重错误时的error表达式 ,和其它表达式beforeSend(在推送允诺以后初始化)、dataFilter(在允诺获得成功后初始化)、complete(当允诺顺利完成后初始化那个表达式,不论获得成功或失利)

其它常见可选模块:

type:允诺形式 (“POST” 或 “GET”)

注意:其它 HTTP 允诺方式,如 PUT 和 DELETE 也可以采用,但仅部分浏览器支持。

async:默认值: true。默认设置下,所有允诺均为异步允诺。假如需要推送同步允诺,请将此选项设置为 false。

注意,同步允诺将锁住浏览器,用户其它操作必须等待允诺顺利完成才可以执行。

data :推送到服务器的数据。将自动转换为允诺字符串格式。也就是他们给前台传递的模块等

dataType:设置服务器返回的模块类型 ,一般都是“json”

JavaScript进阶之Ajax的问题和什么是promise常见模块实用性(其它模块可查文档)

Ajax的难题

Ajax异步操作是透过纯粹的反弹表达式的形式进行处理,难以读懂,维护困难,稍有不慎就会踏入反弹地狱 – 嵌套层次深,不好维护

JavaScript进阶之Ajax的问题和什么是promise假如层层反弹地狱里头写满方式论

promise

ES6 原生植物提供更多了 Promise 对象 ,所谓 Promise,就是一个对象,用来传递异步操作的消息。可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果,可以在对象之间传递和操作promise,帮助他们处理队列

有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的反弹表达式。

promise 还提供更多了简洁的API 使得异步操作更加容易 ,上面来构建promise 操作

1.他们采用new来构建一个Promise Promise的构造表达式接收一个模块,是表达式,并且传入两个模块: resolve,reject, 分别表示异步操作执行获得成功后的反弹表达式和异步操作执行失利后的反弹表达式

JavaScript进阶之Ajax的问题和什么是promisenew来构建一个Promise

resolve作用是,将Promise对象的状态从“未顺利完成”变为“获得成功”(即从 pending 变为 resolved),在异步操作获得成功时初始化,并将异步操作的结果,作为模块传递出去;(pending[待定]初始状态)

reject作用是,将Promise对象的状态从“未顺利完成”变为“失利”(即从 pending 变为 rejected),在异步操作失利时初始化,并将异步操作报出的严重错误,作为模块传递出去。

2.Promise实例生成以后,可以用then方式指定resolved状态和reject状态的反弹表达式 在then方式中,你也可以直接return数据而不是Promise对象,在后面就可以接收到数据了

JavaScript进阶之Ajax的问题和什么是promisethen方式

如前所述Promise推送Ajax允诺

1.如前所述PromisePCB原生植物Ajax

JavaScript进阶之Ajax的问题和什么是promisePromise简单PCB原生植物Ajax

2.透过在then方式中,直接return数据解决反弹地狱

JavaScript进阶之Ajax的问题和什么是promise解决反弹地狱代码更清晰易维护

Promise常见API

.then():得到异步任务正确的结果

.catch()

.finally():获得成功与否都会执行

JavaScript进阶之Ajax的问题和什么是promisePromise常见实例方式

Promise.all(): 所有的顺利完成 (方式接受一个数组作模块,数组中的对象(p1、p2、p3)均为promise实例(假如不是一个promise,该项会被用Promise.resolve转换为一个promise)。它的状态由这三个promise实例决定)

Promise.race():竞速,完成一个即可(同样接受一个数组作模块。当p1, p2, p3中有一个实例的状态出现改变(变为fulfilled或rejected),p的状态就跟着改变。并把第一个改变状态的promise的返回值,传给p的反弹表达式 )

JavaScript进阶之Ajax的问题和什么是promisePromise对象方式
JavaScript进阶之Ajax的问题和什么是promisePromise.all拿到p1 p2 p3数据
JavaScript进阶之Ajax的问题和什么是promise
举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务