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

网页设计跟网站建设的区别什么播放器能看无线新闻台直播

网页设计跟网站建设的区别,什么播放器能看无线新闻台直播,浏览器有些网页打不开是什么原因,品牌vi设计包含哪些简介: Promise.all是JavaScript中一种用于处理多个Promise对象的方法,该方法接收一个数组作为参数,并返回一个新的Promise对象。 这个新的对象会在所有Promise对象都成功解析后解析,解析的结果是一个数组,包含了所有P…

简介:

  • Promise.all是JavaScript中一种用于处理多个Promise对象的方法,该方法接收一个数组作为参数,并返回一个新的Promise对象。

  • 这个新的对象会在所有Promise对象都成功解析后解析,解析的结果是一个数组,包含了所有Promise对象解析后的结果。

  •  解析时如果任何一个Promise对象失败,则这个新的Promise实例会立即失败,并返回第一个失败的Promise对象的错误信息。

  • Promise.all不会改变原有的Promise对象的状态,原有的 Promise 对象仍会按照自己的状态(fulfilled或rejected)进行解析。

那么Promise.all的具体实现过程是怎样的?今天来记录学习下,话不多说,直接上代码和注释,

// 手写Promise.all方法
Promise.myPromiseAll = function (props) {// 这里定义res、rej变量,在Promsie内部赋值,// 这样外部就可以直接调用res()、rej()方法let res, rej;// 这里定义promise1,用于最后返回最终状态const promise1 = new Promise((resolve, reject) => {res = resolve;rej = reject;});//定义i 表示Promise对象的数量let i = 0;// 定义result 用于存储每个成功Promise的结果const result = [];//定义fulfilled 用于追踪已完成的Promise数量let fulfilled = 0;// 这里不能使用.length判断props数组长度,因为他有可能是一些别的可迭代对象,// 所以这里使用for of循环Promise的参数props,for of可以循环任意的可迭代对象for (const item of props) {// 这里保存的数据下标index,用于赋值成功后的data数据,形成闭包环境const index = i;// 这里每循环一次i加1,表示Promise数量i++;// 这里循环拿到的不一定是一个Promise,所以使用Promise.resolve包装一下,// 然后处理成功和失败的状态Promise.resolve(item).then((data) => {// 这里需要考虑到Promise成功时需要做到什么?1、2、// 1、完成的数据汇总到一个数组,最终结果// 在上面定义result,于存储每个成功Promise的结果,// 这里不能使用push方法,因为我们需要返回的数据是传递的顺序,不是完成的顺序// 所以这里根据下标赋值成功后的data数据result[index] = data;// 2、判定是否全部完成// 这里在上面定义fulfilled,记录每次完成fulfilled数量加1fulfilled++;// 这里判断fulfilled完成的数量和Promise数量相等时表示结束,// 把数据result给resif (fulfilled === i) { res(result); }// 这里如果失败,直接调用失败的方法,因为状态一旦确定就无法更改}, rej)// 因为这里是异步代码,运行时循环已经结束,所以i代表的一定是整体的数量}// 这里循环完成,判断i如果等于0,表示没有传递任何Promise参数// 直接给一个空数组if (i === 0) { res([]); }// 最后直接返回最终状态promise1return promise1;
}Promise.myPromiseAll([]).then((res) => {console.log(res);
}, (err) => {console.log("err", err);
})
// 输出 []Promise.myPromiseAll([1, 2, 3]).then((res) => {console.log(res);
}, (err) => {console.log("err", err);
})
// 输出 [1, 2, 3]Promise.myPromiseAll([1, 2, 3, Promise.reject(456)]).then((res) => {console.log(res);
}, (err) => {console.log("error", err);
})
// 输出 error 456Promise.myPromiseAll([1, 2, 3, Promise.resolve(456)]).then((res) => {console.log(res);
}, (err) => {console.log("err", err);
})
// 输出 [ 1, 2, 3, 456 ]

http://www.yayakq.cn/news/400159/

相关文章:

  • 电竞网站建设方案被称为网站开发神器
  • 网站关键词排名怎么做上去中企动力的网站如何
  • 做网站用别人的源码可以吗重庆seo整站优化外包服务
  • 网站聚合搜索怎么做有没有会计做兼职的网站
  • php做的直播网站wordpress 标签云制作
  • WordPress建站主机推荐遵义在线观看
  • 互站网源码商城陕西省建设厅执业资格注册中心网站报名系统
  • 怎样建设微网站首页网页界面设计的构成要素
  • 罗源县建设局网站福州网站建设名列前茅
  • wordpress企业仿站温州做网站的企业
  • 西安建筑公司网站建设模板之家会员
  • 佛山顺德容桂网站制作wordpress中文团队
  • 网站建设需求文档模版深圳模板建站代理
  • 黄页网站建设黄页网站建设自己做的网站怎么植入erp
  • 建设企业网站个人网上wordpress卖东西主题
  • 查看网站是否做百度推广wordpress加速优化插件
  • 免费商城网站源码建筑工程网课心得体会
  • 美食网站设计目的重庆建设摩托车价格及图片
  • 阿克苏网站怎么做seo晋江做任务的网站
  • php网站建设实训引言wordpress插件卡
  • 国内专门做酒的网站有哪些网站没内容 可以备案么
  • 北京网站优化企业如何增加网站索引量
  • 手机静态网站建设课程设计报告莆田网站建设方案报价
  • 关于网站开发的网站事业单位网站后台建设方案
  • 余杭住房和城乡建设局网站开网店需要什么手续和流程
  • 服务中心网站建设意见个人做视频网站视频储存
  • 建设官方网站做网站需要有
  • 如何评判网站建设岗位义乌网站开发公司
  • 网站开发个人简介范文网站标题怎么做
  • 零基础学jsp网站开发网络服务丢失