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

银川企业网站设计制作湖南工业大学网址

银川企业网站设计制作,湖南工业大学网址,wordpress 问答类主题,北京大兴网站建设1. 什么是 Promise#xff1f; Promise 是 JavaScript 中处理异步操作的一种机制#xff0c;它可以让异步操作更加容易管理和控制。Promise 对象代表一个异步操作的最终完成或失败#xff0c;并提供了一种方式来处理操作的结果。 2. Promise 的基本语法 Promise 对象有三…1. 什么是 Promise Promise 是 JavaScript 中处理异步操作的一种机制它可以让异步操作更加容易管理和控制。Promise 对象代表一个异步操作的最终完成或失败并提供了一种方式来处理操作的结果。 2. Promise 的基本语法 Promise 对象有三种状态 Pending进行中初始状态既不是成功也不是失败。Fulfilled成功操作成功完成。Rejected失败操作失败。 改变Promise状态Promise对象的状态改变只有两种可能从pending变为fulfilled和从pending变为rejected。状态一旦改变就不会再变也就是说Promise对象的状态改变是单向的。 Promise 的基本语法如下 // 实例化promise对象 const promise new Promise((resolve, reject) {// 异步操作if (/* 异步操作成功 */) {resolve(value); // 将Promise对象的状态从“pending”变为“fulfilled”同时将异步操作的结果作为回调函数的参数} else {reject(reason); // 将Promise对象的状态从“pending”变为“rejected”同时将异步操作报出的错误作为回调函数的参数} });promise.then(value {// 成功时的回调函数即当Promise的状态变为fulfilled时调用 }, reason {// 失败时的回调函数即当Promise的状态变为rejected时调用 });// 例如 //实例化 Promise 对象 const p new Promise(function(resolve, reject){setTimeout(function(){//// let data 数据库中的用户数据;// resolve// resolve(data);let err 数据读取失败;reject(err);}, 1000); });//调用 promise 对象的 then 方法 p.then(function(value){console.log(value); }, function(reason){console.error(reason); })3.Promise的then方法 const p new Promise((resolve, reject) {setTimeout((){resolve(用户数据);}) });//then函数返回的实际也是一个Promise对象 //1.当回调后返回的是非Promise类型的属性时状态为fulfilledthen函数的返回值为对象的成功值如reutnr 123返回的Promise对象值为123如果没有返回值是undefined//2.当回调后返回的是Promise类型的对象时then函数的返回值为这个Promise对象的状态值//3.当回调后如果抛出的异常则then函数的返回值状态也是rejected let result p.then(value {console.log(value)// return 123;// return new Promise((resolve, reject) {// resolve(ok)// })throw 123 },reason {console.log(reason) }) console.log(result);4. Promise的catch方法 catch函数只有一个回调函数意味着如果Promise对象状态为失败就会调用catch方法并且调用回调函数 const p new Promise((resolve, reject){setTimeout((){//设置 p 对象的状态为失败, 并设置失败的值reject(出错啦!);}, 1000) });// p.then(function(value){}, function(reason){ // console.error(reason); // });p.catch(function(reason){console.warn(reason); });5. Promise 的实践 5.1 读取单个文件 使用 Promise 封装读取文件的操作 // 引入 fs 模块 const fs require(fs);// 使用 Promise 封装 const p new Promise(function(resolve, reject){fs.readFile(./resources/为学.md, (err, data){// 判断如果失败if(err) reject(err);// 如果成功resolve(data);}); });p.then(function(value){console.log(value.toString()); }, function(reason){console.log(读取失败!!); });5.2 读取多个文件 使用 Promise 链式调用读取多个文件 // 引入 fs 模块 const fs require(fs);// 使用 promise 实现 const p new Promise((resolve, reject) {fs.readFile(./resources/为学.md, (err, data) {resolve(data);}); });p.then(value {return new Promise((resolve, reject) {fs.readFile(./resources/插秧诗.md, (err, data) {resolve([value, data]);});}); }).then(value {return new Promise((resolve, reject) {fs.readFile(./resources/观书有感.md, (err, data) {// 压入value.push(data);resolve(value);});}) }).then(value {console.log(value.join(\r\n)); });6.promise封装Ajax function ajax(url) {return new Promise((resolve, reject) {const xhr new XMLHttpRequest();xhr.open(GET, url);xhr.onreadystatechange function() {if (xhr.readyState 4) {if (xhr.status 200 xhr.status 300) {resolve(xhr.responseText);} else {reject(new Error(xhr.statusText));}}};xhr.send();}); }// 使用封装好的函数发送 AJAX 请求 ajax(https://api.example.com/data).then(data {console.log(data);}).catch(error {console.error(error);});7. Promise.all() Promise.all 方法用于将多个 Promise 实例包装成一个新的 Promise 实例。 let promise1 Promise.resolve(3); let promise2 42; let promise3 new Promise((resolve, reject) {setTimeout(resolve, 100, foo); });Promise.all([promise1, promise2, promise3]).then((values) {console.log(values); }); // 输出: [3, 42, foo]8. Promise.race Promise.race 方法用于将多个 Promise 实例包装成一个新的 Promise 实例并以数组中第一个完成的 Promise 实例的结果值作为返回结果。 let promise1 new Promise((resolve, reject) {setTimeout(resolve, 500, one); });let promise2 new Promise((resolve, reject) {setTimeout(resolve, 100, two); });Promise.race([promise1, promise2]).then((value) {console.log(value);// two —— 因为它比 promise1 完成得快 });9. 总结 Promise 是 JavaScript 中处理异步操作的一种强大机制它可以让异步操作更加容易管理和控制。通过封装异步操作可以避免回调地狱使代码更加清晰和易于维护。
http://www.dnsts.com.cn/news/273922.html

相关文章:

  • 优化关键词排名的工具合肥网站seo公司
  • 美观网站建设价格电商数据分析怎么做
  • 学校网站建设方面汇报网站关键字布局
  • 做艺术教育的网站电子商务网站建设方面的论文
  • 给别人做设计的网站辽宁省建设厅网站更新
  • 四个平台建设网站不显示图片攀枝花建设集团网站
  • 长沙网站开发车都建设投资集团网站
  • 网站开发工具.晴天娃娃汤臣倍健网站建设方案
  • 海拉尔做自己的网站wordpress支持的视频
  • 成都专业网站营销深圳网上推广怎么做
  • 网站建设与会展有关网站开发的文献
  • 建设99网站苏州好的做网站的公司哪家好
  • 优秀集团网站案例广州科 外贸网站建设
  • 好的网站建设公司简单好看个人主页网站模板
  • 国外html5网站模板长沙网站建设平台
  • 南通制作公司网站晋中网站建设哪家强
  • 南阳旅游网站建设动漫网站建设方案项目书目录
  • 建设网站要什么资料gis做图网站
  • seo综合查询网站网站屏蔽ip
  • 国外网站怎么打开湖州做网站
  • 支付网站建设的分录网站建设专属名词
  • 盗用别人的图片做网站犯法防雷整改久久建筑网
  • 中国建设银行阜阳分行网站苏州做外贸网站
  • 百度官方网站下载织梦的网站地图更新
  • 全球做的比较好的网站一个网站如何创建多个页面
  • 安徽和城乡建设厅网站php企业网站源代码
  • iis添加网站建设中手机网站淘宝客怎么做
  • 上海网站制作官网网站建设彩铃语
  • 大学生兼职网站的融资方案wordpress禁止自动升级
  • 怎么做电影网站教程机票旅游网站建设