promise

本文详细介绍了Promise在JavaScript中的应用,包括解决并发请求、避免回调地狱、以及其不变状态和then方法的链式调用。通过实例演示了如何创建和使用Promise来组织异步操作,并展示了如何利用async/await实现同步编程风格。
摘要由CSDN通过智能技术生成

promise 可解决的问题:

1、可以支持多个并发的请求,获取并发请求返回的数据
2、解决回调地狱的问题
3、真正用同步代码写异步操作的是 async await
Promise两个特点:

1、对象的状态不受外界影响
2、一旦状态改变,就不会再变,任何时候都可以得到这个结果
Promise三种状态:

Pending(进行中)
Resolved(已完成,又称 Fulfilled)
Rejected(已失败)
Promise有两个参数,第一个是成功resolve的调用的方法,第二个是失败reject调用的方法

new Promise((resolve, reject) => {

if (Math.random() * 100 < = 90) {

resolve(‘Hello, Promises!’);//成功

}

reject(new Error(‘error’));//失败

});

resolve 和 reject 本身也是函数,它们用于将返回值返回给 promise 对象,当成功时使用 resolve 函数将值返回,当失败或遇到错误时使用reject 函数中传递错误对象告知 promise 对象

Promise的then 方法:

then 方法就是把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数。Promise 的优势就在于这个链式调用。我们可以在 then 方法中继续写 Promise 对象并返回,然后继续调用 then 来进行回调操作。

const delay = (ms) => new Promise(

(resolve) => setTimeout(resolve, ms)

);

delay(2000).then(() => {

console.log(‘Resolved after 2 seconds’)

return delay(1500);

}).then(() => {

console.log(‘Resolved after 1.5 seconds’);

return delay(3000);

}).then(() => {

console.log(‘Resolved after 3 seconds’);

throw new Error();

}).catch(() => {

console.log(‘Caught an error.’);

}).then(() => {

console.log(‘Done.’);

});

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值