JavaScript学习笔记之Promise(承诺)实战

本文介绍了Promise在JavaScript中的重要性,它如何解决回调地狱问题,详细阐述了Promise的状态转换、then方法、catch方法、Promise.resolve()、Promise.reject()、Promise.all()和Promise.race()的使用,并探讨了Promise的优缺点。通过示例,演示了如何创建和使用Promise,包括将setTimeout转化为Promise。
摘要由CSDN通过智能技术生成

一、为什么会出现promise?

在实际开发过程中,经常会遇到某些耗时的js操作。其中,包含异步操作也包含同步操作,但是他们都不是立马可以得到结果的。此时,一般会为其指定一个回调函数,即事先规定,一旦他们运行结束,应该会调用那些函数。

JS采用回调来处理异步编程,但是如果出现多层嵌套,也就是常说的"回调地狱"。"回调地狱"不但维护困难,也更容易滋生bug。因此promise出现。

Promise将原来回调地狱中的的回调函数,从横向变为纵向。

 //回调地狱
    asyncOperation(function (data) {
        // 处理data
        anotherAsync(function (data2) {
            // 处理data2
            yetAnotherAsync(function () {
                //完成
            });
        });
    });
    


    //Promise
    PromiseSomething()
        .then(function (data) {
            // 处理data
            return anotherAsync();
        })
        .then(function (data2) {
            // 处理data2
            return yetAnotherAsync();
        })
        .then(function () { 
            //完成
        })

 

二、Promise规范 

  1. 一个promise可能有三种状态:等待(pending)、已完成(fulfilled)、已拒绝(rejected)。
  2. 一个promise状态只可能从"等待"转到"完成"态或者"拒绝"态,不能逆向转换,同时"完成"和"拒绝"状态不能相互转换。
  3. promise必须实现then方法(可以说,then是promise的核心),而且then必须返回一个promise,同一个promise的then可以调用多次,并且回调的执行顺序跟他们被定义时的顺序一致。
  4. then方法接收两个参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值