没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
深入理解深入理解JS异步编程异步编程-Promise
Promise 是 ES6 新增的一个异步解决方案,它同 await 一样,是异步的解决方案,但是相比于 await,Promise
可以同时统一处理多个异步操作。这一点是很方便的。下面我们来一起学习一下吧
前言前言
“JS 是基于单线程事件循环”的概念构建的,回调函数不会立即执行,由事件轮询去检测事件是否执行完毕,当执行完有结果
后,将结果放入回调函数的参数中,然后将回调函数添加到事件队列中等待被执行。
同时也讲了回调函数的问题:
一是“回调地狱”,因为异步回调函数的特点:回调函数是作为异步函数的参数,一层一层嵌套,当嵌套过多,将使代码逻辑变
得混乱,也无法做好错误捕捉和处理(只能在回调函数内部 try catch)。
二是回调的执行方式不符合自然语言的线性思维方式,不容易被理解。
三是控制反转(控制权在其他人的代码上),假如异步函数是别人提供的库,我们把回调函数传进去,我们并不能知道异步函
数在调用回调函数之外做了什么事情。
func1(() => {
func2(() => {
func3(() => {
func4(() => {
try {
...
} catch (err){
...
}
})
});
});
});
一、一、Promise 原理原理
首先,Promise 中文翻译为“承诺”, 是 JavaScript 的一种对象,表示承诺终将返回一个结果,无论成功还是失败。
Promise 有三个状态:等待中(pending),完成(fullfilled),失败(rejected), Promise 的设计具有原子性,状态一旦从
pending 状态转换为 fullfilled 状态或者 rejected 状态后,将不能被改变。
var promise1 = new Promise((resolve, reject) => {
console.log("Promise 构造器会立即执行");
setTimeout(function (){
if(true) {
resolve("完成");
} else {
reject("失败");
}
}, 1000);
})
promise1
.then((result) => {
// do something
console.log(result);
return 1
// return Promise.resolve(1); // 返回一个决议为成功的 promise 实例
// return Promise.reject("error"); // 返回一个决议为拒绝的 Promise 实例
})
.then((result) => {
// .then() 方法会返回一个 promise, 完成调用的参数为前一个 promise 的返回值或者决议值。
// do other things
console.log(result);
throw new Error("错误") // 抛出错误是隐式拒绝
})
.catch((error) => {
// 捕捉错误
console.log(error)
})
.then(() => {
// 还能继续执行!
})
.finally(() => {
// always do somethings
console.log("finally!")
})
资源评论
weixin_38718415
- 粉丝: 11
- 资源: 951
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功