美文网首页
Promise基础

Promise基础

作者: 不忘初心_d | 来源:发表于2019-07-05 15:43 被阅读0次

1、Promise是什么?

promsie是ES6新增的一个特性,它已经列入ES6的正式规范中
promise是抽象处理对象以及对其进行各种操作的组件,是一种异步流程的控制手段。
javaScript和Node都是单线程非阻塞的,所以就会有异步回调的问题,promise就是为了解决这类问题的。
Promise可以支持多个并发的请求,获取并发请求中的数据。
Promise可以使用链式调用的方法来组织代码,所以使用Promise对象后,就可以将异步操作

1.代码示例: 默认promise中的executor默认执行

let p=new Promise((resolve,reject)=>{
    console.log(1);
});
console.log(2);//默认执行

2.代码示例: 调用onFuifilled

let p=new Promise((resolve,reject)=>{
  resolve('成功');
});

p.then((value)=>{//value成功的原因
  console.log(value);
},(err)=>{//err失败的原因
  console.log(err);//成功
})

3、代码示例: 调用onRejected

let p=new Promise((resolve,reject)=>{
  reject('失败');
});

p.then((value)=>{//value成功的原因
  console.log(value);
},(err)=>{//err失败的原因
  console.log(err);//失败
})

4、代码示例: 成功了就不能失败,相反也一样

let p=new Promise((resolve,reject)=>{//
  resolve('成功');
  reject('失败');
});

p.then((value)=>{//value成功的原因
  console.log(value);
},(err)=>{//err失败的原因
  console.log(err);//成功
})

5、链式操作

Promise1().then((value)=>{
  console.log(valuse);
  return Promise2();
}).then((value)=>{
  console.log(value);
  return Promise3();
}).then((value)=>{
  console.log(value);
})//可以then到天荒地老

function Promise1(){
  return new Promsie((resolve,reject)=>{
    setTimeout(function(){//异步操作
      console.log('异步1');
      resolve('异步1传的值');
    },1000);
  })
}
function Promise2(){
  return new Promsie((resolve,reject)=>{
    setTimeout(function(){//异步操作
      console.log('异步2');
      resolve('异步2传的值');
    },3000);
  })
}
function Promise3(){
  return new Promsie((resolve,reject)=>{
    setTimeout(function(){//异步操作
      console.log('异步3');
      resolve('异步3传的值');
    },2000);
  })
}
//输出的值为: 异步1 异步1传的值 异步2 异步2传的值 异步3 异步3传的值

6、promise.all方法 同时执行多个Promise方法,当这个数组里所有的promise对象都变为resolve时,该方法才会返回

let p1=new Promise((resolve,reject)=>{
  setTimeout(function(){
    resolve('Promise1');
  },1000);
})
let p2=new Promise((resolve,reject)=>{
  setTimeout(function(){
    resolve('Promise2');
  },3000);
})

Promise.all([p1,p2]).then((result)=>{
  console.log(result);
})

7、promise.race也是传入一个数组,但是与promise.all不同的是,promise.race只返回跑的快的值

let p1=new Promise((resolve,reject)=>{
    setTimeout(function(){
      console.log(1);
      resolve('Promise');
    },3000);
  })
  let p2=new Promise((resolve,reject)=>{
    console.log(2);
    resolve('Promise2');
  },1000)

  Promise.race([p1,p2]).then((result)=>{
    console.log(result);
  })

相关文章

  • Promise

    promise基础

  • 第八周第二天笔记

    ES6之Promise类 1 Promise类基础知识解读 promise类的静态属性方法分类:resolve()...

  • Promise

    基础用法 Promise.all() Promise.all方法用于将多个 Promise 实例,包装成一个新的 ...

  • js-Promise基础

    js-Promise基础(第三周) Promise含义 promise意思为允诺、许诺、承诺在js中为了解决编写代...

  • 2020前端基础大纲(20200202)

    2020前端基础大纲1、promise 原理 promise.all 可以手写出大概。(async awa...

  • Promise基础

    值的传递: 连续出发的状态: 铺获失败,并终止执行:

  • Promise基础

    Promise Promise对象的三种状态 Promise状态的改变形式 Promise基本的api eg.1 ...

  • Promise基础

    1、Promise是什么? promsie是ES6新增的一个特性,它已经列入ES6的正式规范中promise是抽象...

  • Promise基础

    什么是promise 抽象表达Promise是JS中进行异步编程的新的解决方案(Promise也支持回调),旧的方...

  • promise基础

    promise有两个阶段:未决阶段unsettled和已决阶段settled promise有三种状态:pendi...

网友评论

      本文标题:Promise基础

      本文链接:https://www.haomeiwen.com/subject/dodehctx.html