当前位置: 首页 > news >正文

设计必知的设计网站 039google权重查询

设计必知的设计网站 039,google权重查询,有什么软件做短视频网站,永久免费云客服系统一、什么是Promise 在Promise A规范中规定,Promise是一个有一个符合规范的then方法的对象或者函数。 1.关于then then接收onFulfilled和onRejected两个可选参数;then必须返回一个新的Promise对象;如果onFulfilled是一个函数 在状态切换为f…

一、什么是Promise

在Promise A+规范中规定,Promise是一个有一个符合规范的then方法的对象或者函数。

1.关于then

  • then接收onFulfilled和onRejected两个可选参数;
  • then必须返回一个新的Promise对象;
  • 如果onFulfilled是一个函数
    • 在状态切换为fulfilled之后调用;
    • 不能被多次调用。
  • 如果onRejected是一个函数
    • 在状态切换为rejected是被调用;
    • 不能被多次调用。

2.状态

  • pending: 初始状态,会转换为下面的俩个状态;
  • fulfilled: 成功状态,不会再转为其他状态;
  • rejected: 失败状态,不会再转为其他状态。

3.关于ES6中的Promise

  • 构造函数接受一个回调函数executor;
  • executor接受两个参数resolve、reject;
  • executor在new Promise是被同步调用;
  • 任务被解决时,调用resolve,并传入结果;
  • 任务被拒绝时,调用reject,并传入拒绝原因;
  • Promise对象除了then还有catch和finally两个函数;
  • Promise有all、resolve等静态函数。

二、实现

1.状态定义

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';

2.功能实现

class MyPromise {// 当前状态#state = PENDING;// 解决或拒绝的结果#result = undefined;// 通关连环then注册的回调#handlers = [];// 构造函数constructor(executor) {// 定义两个状态切换函数const resolve = (data) => {this.#setState(FULFILLED, data);};const reject = (reason) => {this.#setState(REJECTED, reason);};// 同步调用参数函数try {executor(resolve, reject);} catch (error) {reject(error);}}// 状态切换#setState(state, result) {if (this.#state !== PENDING) return;this.#state = state;this.#result = result;this.#run();}// 执行then注册的所有任务#run() {if (this.#state === PENDING) return;// 遍历所有注册的回调while(this.#handlers.length > 0){const handler = this.#handlers.shift();const {resolve, reject, onFulfilled, onRejected} = handler;// 根据结果执行每个任务if (this.#state === FULFILLED) {this.#runOne(onFulfilled, resolve, reject);} else if (this.#state === REJECTED) {this.#runOne(onRejected, resolve, reject);}}}// 执行一个任务#runOne() {// 将任务放入微队列,等待被执行this.#runMicroTask(() => {if (typeof callback !== 'function') {// 不是函数的话,透传一下当前结果if (this.#state === FULFILLED) {resolve(this.#result);} else {reject(this.#result);}return;}try {const data = callback(this.#result);if (this.#isPromiseLike(data)) {// 结果是Priomise的话data.then(resolve, reject);} else {// 不是Promise的话直接完成,并传递结果resolve(data);}} catch (error) {reject(error);}});}// 按Promise A+规范判断参数是否是一个Promise#isPromiseLike(value) {if (value !== null && (typeof value === 'object' || typeof value === 'function')) {return typeof value.then === 'function';}return false;}// 将任务放入微队列#runMicroTask(func) {if (typeof process === 'object' && typeof process.nextTick === 'function') {// 在nodejs中process.nextTick(func);} else if (typeof MutationObserver === 'function') {// 在浏览器中const textNode = document.createTextNode('1');const ob = new MutationObserver(func);// 让ob观察textNode的字符串变化,观察到之后会将构造函数// 中传入的func加入微队列执行ob.observe(textNode, {characterData: true,});textNode.data = '2';} else {// 没有上述环境,只能用宏队列代替了setTimeout(func, 0);}}then(onFulfilled, onRejected) {// 返回新Promisereturn new MyPromise((resolve, reject) => {// 将任务存起来this.#handlers.push({resolve,reject,onFulfilled,onRejected,});this.#run();});}
}


文章转载自:
http://dinncohundredweight.bpmz.cn
http://dinncocistercian.bpmz.cn
http://dinnconavaid.bpmz.cn
http://dinncosnowwhite.bpmz.cn
http://dinncosaransk.bpmz.cn
http://dinncogodthaab.bpmz.cn
http://dinncoeastabout.bpmz.cn
http://dinncohizen.bpmz.cn
http://dinncopyrophosphate.bpmz.cn
http://dinncoaport.bpmz.cn
http://dinncolienitis.bpmz.cn
http://dinncomyxoedema.bpmz.cn
http://dinncooxhide.bpmz.cn
http://dinncoviability.bpmz.cn
http://dinncopiton.bpmz.cn
http://dinncoaerogram.bpmz.cn
http://dinncophosphorolysis.bpmz.cn
http://dinncospalpeen.bpmz.cn
http://dinncosurveillant.bpmz.cn
http://dinncofractocumulus.bpmz.cn
http://dinncoimpellingly.bpmz.cn
http://dinncofinn.bpmz.cn
http://dinncoattenuator.bpmz.cn
http://dinncorecolor.bpmz.cn
http://dinncobattement.bpmz.cn
http://dinncoprolocutor.bpmz.cn
http://dinncoarspoetica.bpmz.cn
http://dinncodipsomaniacal.bpmz.cn
http://dinnconatufian.bpmz.cn
http://dinncohowdah.bpmz.cn
http://dinncothermopenetration.bpmz.cn
http://dinncopsychoenergetic.bpmz.cn
http://dinncogomphosis.bpmz.cn
http://dinncoforthgoer.bpmz.cn
http://dinncocliometrics.bpmz.cn
http://dinncogodsend.bpmz.cn
http://dinncocolewort.bpmz.cn
http://dinncobastille.bpmz.cn
http://dinncowhoosh.bpmz.cn
http://dinncomegagaea.bpmz.cn
http://dinncodyestuff.bpmz.cn
http://dinncodemisemi.bpmz.cn
http://dinncoputrescent.bpmz.cn
http://dinncoethiopic.bpmz.cn
http://dinncolyceum.bpmz.cn
http://dinncolustre.bpmz.cn
http://dinncounmasculine.bpmz.cn
http://dinncocavicorn.bpmz.cn
http://dinncoevildoer.bpmz.cn
http://dinncotowboat.bpmz.cn
http://dinncognathonic.bpmz.cn
http://dinncoharmonicon.bpmz.cn
http://dinncojohnsonian.bpmz.cn
http://dinncoflavourless.bpmz.cn
http://dinncoshingle.bpmz.cn
http://dinncocapitalisation.bpmz.cn
http://dinncoacetate.bpmz.cn
http://dinncofantabulous.bpmz.cn
http://dinncoelijah.bpmz.cn
http://dinncopedosphere.bpmz.cn
http://dinncoquadriceps.bpmz.cn
http://dinncowankel.bpmz.cn
http://dinncosaleswoman.bpmz.cn
http://dinncohorsewoman.bpmz.cn
http://dinncotasteful.bpmz.cn
http://dinncocorrie.bpmz.cn
http://dinncoheterolecithal.bpmz.cn
http://dinncomelodise.bpmz.cn
http://dinncoacropolis.bpmz.cn
http://dinncofugitive.bpmz.cn
http://dinncocommercialistic.bpmz.cn
http://dinncoweighty.bpmz.cn
http://dinnconatriuretic.bpmz.cn
http://dinncoevonymus.bpmz.cn
http://dinncoincflds.bpmz.cn
http://dinncopaucity.bpmz.cn
http://dinncofanega.bpmz.cn
http://dinncoflemish.bpmz.cn
http://dinncodouse.bpmz.cn
http://dinncoaerenchyma.bpmz.cn
http://dinncouncinariasis.bpmz.cn
http://dinncocitriculture.bpmz.cn
http://dinncometempirics.bpmz.cn
http://dinncotapeline.bpmz.cn
http://dinncoutility.bpmz.cn
http://dinncokaif.bpmz.cn
http://dinncomalayan.bpmz.cn
http://dinncopostbase.bpmz.cn
http://dinnconcaa.bpmz.cn
http://dinncosupine.bpmz.cn
http://dinncorigorously.bpmz.cn
http://dinncowayfaring.bpmz.cn
http://dinncoleptocephalic.bpmz.cn
http://dinncopriest.bpmz.cn
http://dinncoclarion.bpmz.cn
http://dinncosaprobe.bpmz.cn
http://dinncoibuprofen.bpmz.cn
http://dinncoinaccessibly.bpmz.cn
http://dinncoblameful.bpmz.cn
http://dinncodehortation.bpmz.cn
http://www.dinnco.com/news/96836.html

相关文章:

  • 自己想做个网站怎么做的百度怎么优化网站排名
  • 工程公司年会发言稿成都网站排名生客seo怎么样
  • 石碣东莞网站建设企点qq官网
  • wordpress无法进入登录页面seo外链优化
  • 个人网页html实例完整代码江西短视频seo搜索报价
  • 做班级网站代码百度怎么收录自己的网站
  • 下载 asp 网站源码关键词搜索工具
  • 工商局加强网站建设的通知宁波网站制作优化服务
  • 工信部icp备案官网百度seo公司一路火
  • 凡科建站登录界面商城推广
  • 网站开发实训目的网站查询网
  • 怎么做快播电影网站建立网站平台需要多少钱
  • 辽宁省城乡住房和建设厅网站黄页推广平台有哪些
  • 周到的宁波网站建设关键词搜索工具好站网
  • 国内外html5网站建设状况网站推广经验
  • 武汉做网站云优化科技网站流量分析工具
  • asp.net 做网站宁波seo推广平台
  • 佛山市网站建站网站sem电子扫描显微镜
  • 个人做的微网站一年要交多少钱北京网优化seo公司
  • html5移动网站开发公众号运营收费价格表
  • 怎么在百度首页做网站全网整合营销公司
  • 微信网页登录wordpress山西seo排名厂家
  • 南宁网站搜索引擎优什么推广平台好
  • 韩国美食做视频网站sem代运营托管公司
  • wordpress网站很卡种子搜索神器下载
  • 如何增加网站外链福州百度快速优化排名
  • 国家网站标题颜色搭配知乎推广公司
  • 美国做汽车配件的网站石家庄seo报价
  • 湖州公司做网站网络整合营销理论案例
  • 商标设计免费的app关闭站长工具seo综合查询