加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
09_Promise对象.html 3.08 KB
一键复制 编辑 原始数据 按行查看 历史
wangjiahui.vendor 提交于 2023-06-11 20:53 . change directory
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>11_Promise对象</title>
</head>
<body>
<!--
1. 理解:
* Promise对象: 代表了未来某个将要发生的事件(通常是一个异步操作)
* 有了promise对象, 可以将异步操作以同步的流程表达出来, 避免了层层嵌套的回调函数(俗称'回调地狱')
* ES6的Promise是一个构造函数, 用来生成promise实例
2. 使用promise基本步骤(2步):
* 创建promise对象
let promise = new Promise((resolve, reject) => {
//初始化promise状态为 pending
//执行异步操作
if(异步操作成功) {
resolve(value);//修改promise的状态为fullfilled
} else {
reject(errMsg);//修改promise的状态为rejected
}
})
* 调用promise的then()
promise.then(function(
result => console.log(result),
errorMsg => alert(errorMsg)
))
3. promise对象的3个状态
* pending: 初始化状态
* fullfilled: 成功状态
* rejected: 失败状态
4. 应用:
* 使用promise实现超时处理
* 使用promise封装处理ajax请求
let request = new XMLHttpRequest();
request.onreadystatechange = function () {
}
request.responseType = 'json';
request.open("GET", url);
request.send();
-->
<script type="text/javascript">
// 模拟异步操作
let promiseAsync = new Promise((resolve, reject) => {
console.log('1111');//同步执行
//启动异步任务,一段耗时的异步操作
setTimeout(function () {
console.log('3333');
resolve('success');
},1000)
});
promiseAsync.then((data) => {
console.log('成功了。。。' + data);
}, (error) => {
console.log('失败了' + error);
})
.catch(error=>{
console.log(error);
})
console.log('2222');//同步执行
// 执行一个异步任务
function random(){
return new Promise((resolve,reject)=>{
setTimeout(function(){
const num=Math.random();
if(num>=0.5){
resolve(num);
}else{
reject('数字小于0.5')
}
},3000)
})
}
random().then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
// 依次执行多个异步任务
let count=1
function runAsync1(){
const p=new Promise((reslove,reject)=>{
setTimeout(()=>{
reslove('执行完成'+count++)
},4000)
})
return p
}
runAsync1().then(res=>{
console.log(res);
return runAsync1()
}).then(res=>{
console.log(res);
return runAsync1()
}).then(res=>{
console.log(res)
})
// function loadImageAsync(url) {
// return new Promise(function(resolve, reject) {
// const image = new Image();
// image.onload = function() {
// resolve(image);
// };
// image.onerror = function() {
// reject(new Error('Could not load image at ' + url));
// };
// image.src = url;
// console.log(image.src)
// });
// }
// loadImageAsync('http://houyuantest.oss-cn-zhangjiakou.aliyuncs.com/images/2019/11/25/15746731245012585.png')
// .then(res=>{
// console.log(res)
// })
</script>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化