关于promise的操作

前些时候有个小白朋友说看到有个人写函数嵌套了五层,然后他说,那个人好厉害。其实的在前端里,并不是函数嵌套越多越好,如果嵌套的多的话,可能会出现回调地狱的情况。
那么什么是回调地狱呢?
当许多功能需要连续调用,环环相扣依赖时,代码一层一层的嵌套,看起来就头疼那种,就产生了回调地狱。
下面是我做的一个关于promise的一个demo,可以解除注释放入一个空的html中执行。

<script>
// 回调函数式执行异步
  // var a = function() {
  //   console.log('a');
  // };
  // var b = function(call) {
  //   call()
  //   console.log('b');
  // };
  // var c = function() {
  //   for(var i=0;i<100;i++){
  //     console.log('c')
  //   }  
  // };
  // a(b(c)); // 100个c -> b -> a
// promise 异步执行
  // var promise = new Promise(function(resolve, reject){
  //   console.log('............');
  //   resolve(); // 这是promise的一个机制,只有promise实例的状态变为resolved,才会会触发then回调函数
  // });
  // promise.then(function(){
  //   for(var i=0;i<100;i++) {
  //       console.log('c')
  //   }    
  // })
  // .then(function(){
  //     console.log('b')
  // })
  // .then(function(){
  //     console.log('a')
  // })
// then方法会在所有同步任务执行完毕之后才会执行
  // var promise = new Promise(function(resolve, reject) {
  //   console.log('Promise instance');
  //   resolve()
  // });
  // promise.then(function() {
  //   console.log('resolved result');
  // });
  // for(var i=0;i<100;i++) {
  // console.log(i);
  // }
// 两秒之后p1将reject给p2
  // const p1 = new Promise(function (resolve, reject) {
  //   console.log('2秒之后,调用返回p1的reject给p2');
  //   setTimeout(reject, 3000, new Error('fail'))
  // })
  // const p2 = new Promise(function (resolve, reject) {
  //     console.log('1秒之后,调用p1');
  //     setTimeout(() => resolve(p1), 1000)
  // })
  // p2
  //   .then(result => console.log(result))
  //   .catch(error => console.log(error))
    // 两秒之后返回p1的resolve
  // const p1 = new Promise(function (resolve, reject) {
  //   console.log('2秒之后,调用返回p1的resolve给p2');
  //   setTimeout(resolve, 3000, 'success')
  // })
  // const p2 = new Promise(function (resolve, reject) {
  //   console.log('1秒之后,调用p1');
  //   setTimeout(() => resolve(p1), 1000)
  // })
  // p2
  //   .then(result => console.log(result))
  //   .catch(error => console.log(error))
// 要等内部的同步函数执行完毕之后才会执行resolve异步回调
  // new Promise((resolve, reject) => {
  //   console.log(1);
  //   resolve(2);
  //   console.log(3);
  // }).then(result => {
  //     console.log(result);
  // });
  // .all方法状态是由数组里的p1,p2,p3...共同决定的,其中有一个reject都会返回给promise
  // let promise = Promise.all([p1, p2, p3])
  // .race 就是谁快谁把值返回给promise
  // promise.race([p1, p2, p3])
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值