Promise

Promise(ES6 新增),本质上属于构造函数,可以实例化对象,封装一个异步操作并获取其成功或失败的结果

1. Promise 用法

new Promise(excutor).then( onResolved, onRejected )
==> new Promise( resolve,reject)=> { } ).then( val => { //resolve 成功回调函数 }, reason => { //reject 失败回调函数 })*

excutor 函数:执行器,是一个回调函数  (resolve,reject)=> { }
onResolved 函数:成功的回调函数 val => { }
onRejected  函数:失败的回调函数 reason => { }

执行器内部包裹(处理)一个异步任务,成功执行 resolve,失败执行 reject。

注:
	1. 执行器在 Promise 内部是立即同步执行;
	2. Promise().then、 Promise().catch 属于异步微任务;
	3. resolve 和 reject 均属于回调函数,写在 then( ) 当中,then 的链式调用,解决了回调地狱的问题。

代码实例:

new Promise( (res,rej) => {
   
	if(条件) {
    // 条件成功,执行 resolve 回调函数
		res();
	} else {
    //失败,执行 reject 回调函数
		rej();
	}
}).then( () => {
    //res 函数体},() => { //rej 函数体 })
// 刮刮乐小游戏
// 随机数生成
function ranNum(m, n) {
   
      return Math.ceil(Math.random() * (n - m + 1)) + m - 1;
}

new Promise((res,rej) => {
   
      setTimeout(() => {
   
             let num = ranNum(0, 100);
             if (num < 33) {
   
                 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Promise嵌套是指在使用Promise时,一个Promise的回调函数中又返回了一个新的Promise,形成了嵌套的结构。这种嵌套的结构可以用来处理多个异步操作的依赖关系,使得代码更加清晰和可读。 在Promise嵌套中,可以通过链式调用的方式来处理多个异步操作。具体来说,可以在一个Promise的回调函数中返回一个新的Promise对象,然后继续在新的Promise对象上添加回调函数。这样就可以形成一个Promise链,每个Promise的回调函数都可以处理前一个Promise的结果,并返回一个新的Promise对象。 下面是一个简单的示例,展示了Promise嵌套的用法: ```javascript function asyncOperation1() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Operation 1 completed'); }, 1000); }); } function asyncOperation2() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Operation 2 completed'); }, 2000); }); } function asyncOperation3() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Operation 3 completed'); }, 1500); }); } asyncOperation1() .then(result1 => { console.log(result1); return asyncOperation2(); }) .then(result2 => { console.log(result2); return asyncOperation3(); }) .then(result3 => { console.log(result3); }) .catch(error => { console.error(error); }); ``` 在上面的示例中,asyncOperation1、asyncOperation2和asyncOperation3分别表示三个异步操作。通过Promise的then方法,可以依次处理这三个异步操作的结果,并在控制台输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值