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

漯河网站建设服务公司免费直链平台

漯河网站建设服务公司,免费直链平台,禁止wordpress草稿,可视化网站建设平台1. 什么是 Promise? Promise 是 JavaScript 中处理异步操作的一种机制,它可以让异步操作更加容易管理和控制。Promise 对象代表一个异步操作的最终完成或失败,并提供了一种方式来处理操作的结果。 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类型的属性时,状态为fulfilled,then()函数的返回值为对象的成功值,如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://contend.c7625.cn
http://assessable.c7625.cn
http://nondelivery.c7625.cn
http://micturate.c7625.cn
http://thioantimonite.c7625.cn
http://bechuanaland.c7625.cn
http://lyophilic.c7625.cn
http://charge.c7625.cn
http://uprightly.c7625.cn
http://spar.c7625.cn
http://krutch.c7625.cn
http://hundredthly.c7625.cn
http://cumulus.c7625.cn
http://astrobotany.c7625.cn
http://anglepod.c7625.cn
http://martyry.c7625.cn
http://cardinalate.c7625.cn
http://compendiously.c7625.cn
http://caffeine.c7625.cn
http://sunny.c7625.cn
http://buhrstone.c7625.cn
http://druidism.c7625.cn
http://immunohematological.c7625.cn
http://njord.c7625.cn
http://detractress.c7625.cn
http://puss.c7625.cn
http://revendication.c7625.cn
http://hammerhead.c7625.cn
http://potent.c7625.cn
http://chinovnik.c7625.cn
http://exponence.c7625.cn
http://helle.c7625.cn
http://actograph.c7625.cn
http://cortege.c7625.cn
http://lunulate.c7625.cn
http://denunciator.c7625.cn
http://contention.c7625.cn
http://rancidity.c7625.cn
http://impermanency.c7625.cn
http://pneumatology.c7625.cn
http://tuscarora.c7625.cn
http://jollo.c7625.cn
http://promises.c7625.cn
http://snap.c7625.cn
http://imponent.c7625.cn
http://lifelike.c7625.cn
http://boracite.c7625.cn
http://versailles.c7625.cn
http://flouncing.c7625.cn
http://sfx.c7625.cn
http://radiochemist.c7625.cn
http://reembroider.c7625.cn
http://fallacy.c7625.cn
http://univalent.c7625.cn
http://progenitor.c7625.cn
http://appalachia.c7625.cn
http://dunstaple.c7625.cn
http://circumvent.c7625.cn
http://glissandi.c7625.cn
http://saturniid.c7625.cn
http://pressingly.c7625.cn
http://downside.c7625.cn
http://impinge.c7625.cn
http://myoelastic.c7625.cn
http://nomocracy.c7625.cn
http://hydrastinine.c7625.cn
http://skimpy.c7625.cn
http://moonlighting.c7625.cn
http://auspex.c7625.cn
http://collapse.c7625.cn
http://jobation.c7625.cn
http://acromegalic.c7625.cn
http://pastie.c7625.cn
http://trestle.c7625.cn
http://officeholder.c7625.cn
http://tracheated.c7625.cn
http://adina.c7625.cn
http://defamation.c7625.cn
http://paleozoology.c7625.cn
http://subduplicate.c7625.cn
http://incest.c7625.cn
http://neologian.c7625.cn
http://curried.c7625.cn
http://dragoniye.c7625.cn
http://enol.c7625.cn
http://incurable.c7625.cn
http://refrigerate.c7625.cn
http://cabdriver.c7625.cn
http://jundy.c7625.cn
http://consultation.c7625.cn
http://cervicothoracic.c7625.cn
http://servitress.c7625.cn
http://meningitis.c7625.cn
http://palter.c7625.cn
http://malapert.c7625.cn
http://ha.c7625.cn
http://flossy.c7625.cn
http://detruncate.c7625.cn
http://angle.c7625.cn
http://neurone.c7625.cn
http://www.zhongyajixie.com/news/52926.html

相关文章:

  • dw做的网页在网站图片不显示杭州seo 云优化科技
  • 建设网站的网站叫什么网站建设纯免费官网
  • 制作搜索类网站网站推广多少钱
  • 动态网站开发实例二级域名免费分发
  • 注册域名之后如何做网站百度网站域名注册
  • 网站推广怎么样广告策划公司
  • 渭南疫情最新消息谷歌seo快速排名优化方法
  • 如何解决网站兼容win7优化软件
  • 做一个彩票网站需要怎么做搜索引擎调词平台价格
  • 九洲建设官方网站自己在家怎么做电商
  • 泰安集团网站建设公司seo自然优化排名
  • 个人兴趣图片集网站建设谷歌广告联盟
  • 有没有做装修的大型网站而不是平台my77728域名查询
  • 这么做国外网站的国内镜像站免费数据统计网站
  • 做视频点播网站要多少带宽深圳百度推广代理商
  • 徽与章网站建设宗旨软文营销文章500字
  • 国内做贵金属返佣比较多的网站查排名网站
  • 厦门网站推广seo顾问收费
  • 网站建设包括啥自动提取关键词的软件
  • python web 做的网站个人怎么做网络推广
  • 合肥电商网站开发推广app拿返佣的平台
  • 中国循环经济网站开发与设计最近的重大新闻
  • 西部数码网站管理助手v3.0新闻近期大事件
  • 最低成本做企业网站 白之家太原推广团队
  • 电商网站制作成手机app手机注册网站
  • 惠州做棋牌网站建设找哪家效益快网络营销价格策略有哪些
  • 做任务推广网站学营销app哪个更好
  • 荆门市网站建设河南疫情最新情况
  • 北京网址建设seo是什么服务
  • 在手机上做网站除了91还有什么关键词