我对Promise的理解

1. 什么是Promise

异步编程的一种解决方案

2. Promise 的用途(可以链式调用)

主要是解决地狱回调的问题,比如需要结果请求很多个接口,这些接口的参数依赖另外一个接口返回的数据,这样的话就会一层一层的嵌套,称为回调地狱,嵌套很多层的时候代码就会让人无法理解,但是使用Promise的话就解决了这个问题。

3. 创建一个Promise:

return new Promise((resolve,reject)=>{})

4. 使用 Promise.prototype.then

在多个含有异步操作的函数之间有依赖关系时,使用这个方法能够清晰的展示依赖关系,因为then()返回的是一个新的Promise实例,所以可以采用链式写法

const promise1 = new Promise((resolve, reject) => {
  resolve('Success!');
});
promise1.then((value) => {
  console.log(value);
  // expected output: "Success!"
});

5. 使用 Promise.all

可以将多个Promise实例包装成一个新的Promise实例。同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值。

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});

6. 使用 Promise.race

哪个快返回哪个结果,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝。

const promise1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then((value) => {
  console.log(value);
  // Both resolve, but promise2 is faster
});
// expected output: "two"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值