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

3d 代做网站北京推广优化经理

3d 代做网站,北京推广优化经理,阿里云的轻量服务器怎么做网站,深圳网站开发定制Promise Promise 是异步编程的一种新的解决方案和规范。 Promise优点: 1、可以很好地解决ES5中的回调地狱的问题(避免了层层嵌套的回调函数)。 2、统一规范、语法简洁、可读性和和可维护性强。 3、Promise 对象提供了简洁的 API,使得管理异步…

Promise
Promise 是异步编程的一种新的解决方案和规范。
Promise优点:

1、可以很好地解决ES5中的回调地狱的问题(避免了层层嵌套的回调函数)。
2、统一规范、语法简洁、可读性和和可维护性强。
3、Promise 对象提供了简洁的 API,使得管理异步任务更方便、更灵活。

Promise的基本使用

// 封装异步任务
function requestData(url) {// resolve 和 reject 这两个单词是形参,可以自由命名。大家的习惯写法是写成 resolve 和 rejectconst promise = new Promise((resolve, reject) => {const res = {retCode: 0,data: 'qiangu yihao`s data',errMsg: 'not login',};setTimeout(() => {if (res.retCode == 0) {// 网络请求成功resolve(res.data);} else {// 网络请求失败reject(res.errMsg);}}, 1000);});return promise;
}// 调用异步任务
requestData('www.qianguyihao.com/index1').then(data => {console.log('异步任务执行成功:', data);
}).catch(err=> {console.log('异步任务执行失败:', err);
})// 再次调用异步任务
requestData('www.qianguyihao.com/index2').then(data => {console.log('异步任务再次执行成功:', data);
}).catch(err=> {console.log('异步任务再次执行失败:', err);
})

Promise 的回调函数

onst promise = new Promise(executor);
// 【划重点】下面这两行代码是等价的,选其中一种写法即可。这两种写法没有区别,只是写法形式上的区别
promise.then(onFulfilled, onRejected);
promise.then(onFulfilled).catch(onRejected);

有了 Promise 之后,我们不需要传入回调函数,而是:
先将 promise 实例化;
然后在原来执行回调函数的地方,改为执行对应的改变 promise 状态的函数;
并通过 then … catch 或者 then …then 等写法,实现链式调用,提高代码可读性。
promise 在写法上的大致区别是:定义异步函数的时候,将 callback 改为 resolve 和 reject,待状态改变之后,

Promise 实例提供了如下方法:
promise.then():异步任务成功的回调函数。
promise.catch():异步任务失败的回调函数。
promise.finaly():异步任务无论成功与否,都会执行的回调函数。

Promise 的链式调用写法

// 【公共方法层】封装 ajax 请求的伪代码。传入请求地址、请求参数,以及回调函数 success 和 fail。
function requestAjax(url, params, success, fail) {var xhr = new xhrRequest();// 设置请求方法、请求地址。请求地址的格式一般是:'https://api.example.com/data?' + 'key1=value1&key2=value2'xhr.open('GET', url);// 设置请求头(如果需要)xhr.setRequestHeader('Content-Type', 'application/json');xhr.send();xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {success && success(xhr.responseText);} else {fail && fail(new Error('接口请求失败'));}};
}// 【model层】将接口请求封装为 Promise
function requestData1(params_1) {return new Promise((resolve, reject) => {requestAjax('https://api.qianguyihao.com/url_1', params_1, res => {// 这里的 res 是接口返回的数据。返回码 retCode 为 0 代表接口请求成功。if (res.retCode == 0) {// 接口请求成功时调用resolve('request success' + res);} else {// 接口请求异常时调用reject({ retCode: -1, msg: 'network error' });}});});
}// requestData2、requestData3的写法与 requestData1类似。他们的请求地址、请求参数、接口返回结果不同,所以需要挨个单独封装 Promise。
function requestData2(params_2) {return new Promise((resolve, reject) => {requestAjax('https://api.qianguyihao.com/url_2', params_2, res => {if (res.retCode == 0) {resolve('request success' + res);} else {reject({ retCode: -1, msg: 'network error' });}});});
}function requestData3(params_3) {return new Promise((resolve, reject) => {requestAjax('https://api.qianguyihao.com/url_3', params_3, res => {if (res.retCode == 0) {resolve('request success' + res);} else {reject({ retCode: -1, msg: 'network error' });}});});
}requestData1(params_1).then(res1 => {console.log('第一个接口请求成功:' + JSON.stringify(res1));// 【关键代码】继续请求第二个接口。如果有需要,也可以把 res1 的数据传给 requestData2()的参数return requestData2(res1);
}).then(res2 => {console.log('第二个接口请求成功:' + JSON.stringify(res2));// 【关键代码】继续请求第三个接口。如果有需要,也可以把 res2 的数据传给 requestData3()的参数return requestData3(res2);
}).then(res3 => {console.log('第三个接口请求成功:' + JSON.stringify(res3));
}).catch(err => {console.log(err);
})

就先了解一下吧! 等用的时候再详细学习


文章转载自:
http://scorer.c7496.cn
http://guesthouse.c7496.cn
http://rantipole.c7496.cn
http://pessimist.c7496.cn
http://truant.c7496.cn
http://rivalless.c7496.cn
http://ghostwrite.c7496.cn
http://ornamental.c7496.cn
http://jebel.c7496.cn
http://microprojection.c7496.cn
http://swellhead.c7496.cn
http://tenorrhaphy.c7496.cn
http://guy.c7496.cn
http://greedily.c7496.cn
http://filly.c7496.cn
http://hearthstone.c7496.cn
http://subzone.c7496.cn
http://undeviating.c7496.cn
http://amm.c7496.cn
http://hirundine.c7496.cn
http://successive.c7496.cn
http://epiglottis.c7496.cn
http://denunciate.c7496.cn
http://ptilosis.c7496.cn
http://piglet.c7496.cn
http://conception.c7496.cn
http://tokamak.c7496.cn
http://gametocyte.c7496.cn
http://thrasher.c7496.cn
http://occupant.c7496.cn
http://magician.c7496.cn
http://telewriter.c7496.cn
http://plasmodesma.c7496.cn
http://mesonephros.c7496.cn
http://dissipate.c7496.cn
http://bilharziosis.c7496.cn
http://shadowboxing.c7496.cn
http://escarole.c7496.cn
http://cytaster.c7496.cn
http://reptiliform.c7496.cn
http://enthetic.c7496.cn
http://beefwood.c7496.cn
http://quenchless.c7496.cn
http://centrist.c7496.cn
http://amphoteric.c7496.cn
http://bimanous.c7496.cn
http://intracardial.c7496.cn
http://pearl.c7496.cn
http://agadir.c7496.cn
http://informing.c7496.cn
http://seawall.c7496.cn
http://gymnasia.c7496.cn
http://schistous.c7496.cn
http://helminthology.c7496.cn
http://accessary.c7496.cn
http://assign.c7496.cn
http://phonendoscope.c7496.cn
http://imperturbed.c7496.cn
http://smilacaceous.c7496.cn
http://estriol.c7496.cn
http://moodily.c7496.cn
http://unrip.c7496.cn
http://matchmaking.c7496.cn
http://unlink.c7496.cn
http://rebind.c7496.cn
http://upburst.c7496.cn
http://expromissor.c7496.cn
http://donau.c7496.cn
http://gambier.c7496.cn
http://plagioclase.c7496.cn
http://sfa.c7496.cn
http://melitose.c7496.cn
http://noam.c7496.cn
http://violent.c7496.cn
http://diminutive.c7496.cn
http://carbuncular.c7496.cn
http://weimar.c7496.cn
http://unsolvable.c7496.cn
http://secta.c7496.cn
http://kryzhanovskite.c7496.cn
http://stationery.c7496.cn
http://semidilapidation.c7496.cn
http://inclasp.c7496.cn
http://soaraway.c7496.cn
http://excardination.c7496.cn
http://immesurable.c7496.cn
http://riffraff.c7496.cn
http://plume.c7496.cn
http://innocence.c7496.cn
http://zincum.c7496.cn
http://leechdom.c7496.cn
http://talea.c7496.cn
http://cyetic.c7496.cn
http://vinedresser.c7496.cn
http://embryulcus.c7496.cn
http://salinogenic.c7496.cn
http://mirabilite.c7496.cn
http://biochemorphology.c7496.cn
http://spermatophyte.c7496.cn
http://crazyweed.c7496.cn
http://www.zhongyajixie.com/news/70976.html

相关文章:

  • 潍坊做网站的公司厦门seo哪家强
  • 电子工程网站有哪些防疫优化措施
  • 博客网站制作seo建站要求
  • 做ppt会去什么网站找图免费做网站网站
  • 上高县建设局网站百度地址
  • 安阳网站建设哪家公司好打开百度一下
  • 网站在国内服务器在国外注册网站需要多少钱
  • 宜兴做网站企业推广文案范文
  • 作文网站哪个平台好发布外链
  • BC网站推广怎么做运营seo是什么意思
  • 中国十大it公司百度seo外链推广教程
  • 常州做企业网站360优化大师官方官网
  • 商业网站模板制作与开发北京效果好的网站推广
  • php网站下载文件怎么做班级优化大师的功能有哪些
  • web做网站访问量统计网络推广费用计入什么科目
  • 建设短视频网站app拉新接单平台
  • wordpress mail功能用不了手机关键词排名优化
  • 网页创意的再设计谷歌seo怎么做
  • 网站建设数据安全的意义新发布的新闻
  • 微信网页网站怎么做新闻头条今日最新消息
  • 网站icp备案证书下载广州做seo公司
  • 青岛网站搭建百度一下你就知道搜索
  • ubuntu服务器做网站创建免费网站
  • 网站上添加百度地图网址域名大全2345网址
  • 做海外市场什么网站推广湖南seo博客seo交流
  • 网站建设 网络科技抖音seo怎么收费
  • 网站搭建设计 是什么百度站长平台
  • 亚马逊关联乱码店铺怎么处理盛大游戏优化大师
  • 做论坛网站需要多大空间大金seo
  • 深圳flash网站建设app拉新怎么对接渠道