一文让你搞定Promise原理及api使用

目录

前言

Promise原理

api及用法

Promise.prototype.then()

Promise.prototype.catch()

Promise.prototype.finally()

Promise.prototype.all()

Promise.prototype.race()

结论:


前言

        Promise(承诺)是JavaScript中一种流行的异步编程方式,它可以有效地解决回调嵌套潜在的问题,让代码更清晰易懂。Promise对象表示异步操作的最终结果。

Promise原理包括以下几个部分

  • Promise状态

        Promise有三个状态,分别是 pending(等待状态)、fulfilled(完成状态)和rejected(失败状态)。

  • Promise执行

        Promise执行时,首先是进入等待状态。之后,通过异步操作,异步操作完成后会调用resolve()方法来将Promise对象状态和结果变更为成功状态。如果异步操作发生错误,会调用reject()方法将Promise对象状态和错误信息更改为失败状态。

  • Promise链式调用

        在链式调用中,每次调用都返回一个新的Promise对象。既可以实现顺序执行,也可以将多个异步操作并行执行,并且可以通过then()方法来处理异步操作的结果。处理函数可以被多个then()方法串联调用。如果某个处理函数返回一个Promise对象,则下一个处理函数将在这个Promise对象上等待。

  • Promise异常处理

        在链式调用中,可以使用catch()方法来捕获错误并将Promise对象状态转为失败状态。此外,Promise还支持finally()方法来在Promise执行完毕后执行一些逻辑。无论状态是成功还是失败,finally()方法都会执行。

api及用法

  • Promise.resolve() 和 Promise.reject()

        这两个方法可以分别返回一个以确定状态或拒绝状态为结果的 Promise 对象。

Promise.resolve('resolved value').then(function (value) {
  console.log(value) // 'resolved value'
})

Promise.reject(new Error('rejected reason')).catch(function (error) {
  console.error(error.message) // 'rejected reason'
})
  • Promise.prototype.then()

        将回调函数添加到 Promise 实例,并返回一个新的 Promise 对象,新的 Promise 对象的状态取决于前一个 Promise 对象的状态码。Promise 对象有三种状态,分别是 pending、fulfilled、rejected。当前一个 Promise 对象状态为 fulfilled 时,新的 Promise 将进入 fulfilled 状态,并调用 onResolved 回调函数;当前一个 Promise 对象状态为 rejected 时,新的 Promise 将进入 rejected 状态,并调用 onRejected 回调函数。

var promise = new Promise(function (resolve, reject) {
  setTimeout(function () {
    resolve('value')
  }, 1000)
})

promise.then(function (value) {
  console.log(value) // 'value'
}, function (error) {
  console.error(error)
})
  • Promise.prototype.catch()

        用于处理 Promise 对象抛出的异常,实际上等同于 Promise.prototype.then(undefined, onRejected)。

var promise = Promise.reject(new Error('rejected reason'))

promise.catch(function (error) {
  console.error(error.message) // 'rejected reason'
})
  • Promise.prototype.finally()

        用于指定 Promise 对象状态变为 resolved 或 rejected 后的回调,在 Promise 对象状态变为 resolved 或 rejected 后都会执行。并返回一个新的 Promise 对象。

var promise = new Promise(function (resolve, reject) {
  setTimeout(function () {
    resolve('value')
  }, 1000)
})

promise.then(function (value) {
  console.log(value)
}).catch(function (error) {
  console.error(error)
}).finally(function () {
  console.log('finally')
})
  • Promise.prototype.all()

        方法用于将多个 Promise 对象合并为一个 Promise 对象,当所有的 Promise 对象都变为 resolved 状态后,Promise.all() 方法返回一个新的 Promise 对象,新的 Promise 对象的结果是所有 Promise 对象结果组成的数组。

var promise1 = Promise.resolve('value1')
var promise2 = Promise.resolve('value2')
var promise3 = Promise.resolve('value3')

Promise.all([promise1, promise2, promise3]).then(function (values) {
  console.log(values) // ['value1', 'value2', 'value3']
})
  • Promise.prototype.race()

        用于将多个 Promise 对象合并为一个 Promise 对象,当其中任意一个 Promise 对象变为 resolved 或 rejected 状态后,Promise.race() 方法返回的 Promise 对象就会采用这个 Promise 对象的状态和值。

var promise1 = Promise.resolve('value1')
var promise2 = Promise.resolve('value2')
var promise3 = Promise.reject(new Error('rejected reason'))

Promise.race([promise1, promise2, promise3]).then(function (value) {
  console.log(value) // 'value1'
}).catch(function (error) {
  console.error(error.message) // 'rejected reason'
})

Promise是一种强大且灵活的异步编程方式。它可以有效地解决回调嵌套和异步操作结果传递的问题,并可通过链式调用和异常处理来确保代码的可读性和可靠性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Eclipse是一个开放源代码的集成开发环境(IDE),可用于Java开发,但也可以用于其他编程语言开发。在本文中,我将向你展示如何使用Eclipse进行Java开发。 1. 下载Eclipse 首先,你需要从Eclipse官方网站下载Eclipse IDE。下载页面上将提供几个不同的版本,包括Eclipse IDE for Java Developers、Eclipse IDE for JavaScript and Web Developers,以及Eclipse IDE for C/C++ Developers等。选择适合你的版本,然后按照安装向导进行安装。 2. 创建Java项目 一旦你安装了Eclipse,你可以启动它并创建一个新的Java项目。选择“File”->“New”->“Java Project”,然后按照向导创建一个新的Java项目。在创建项目时,你需要指定项目名称、项目类型以及JRE版本等信息。 3. 创建Java类 一旦你创建了一个Java项目,你就可以创建一个Java类。选择你的Java项目,在“src”文件夹上右键单击,然后选择“New”->“Class”。输入类名和选择要继承的类(如果有的话),然后点击“Finish”。 4. 编写Java代码 现在你已经创建了一个Java类,可以开始编写Java代码了。在Eclipse的编辑器中,你可以输入Java代码并保存它。当你保存Java文件时,Eclipse会自动编译你的代码,并在Problems视图中显示任何编译错误。 5. 运行Java程序 一旦你编写了Java代码并保存了它,你可以运行Java程序。右键单击Java文件,然后选择“Run As”->“Java Application”。如果一切顺利,你的Java程序将在控制台中输出结果。 6. 调试Java程序 如果你的Java程序出现了错误或不按预期运行,你可以使用Eclipse的调试器来调试它。在Eclipse的编辑器中,你可以设置断点并启动调试器。当程序执行到断点时,调试器会暂停程序并允许你检查变量、运行代码等。 7. 导入外部JAR包 有时,你可能需要使用外部JAR包来完成你的Java项目。在Eclipse中,你可以简单地将外部JAR包导入到你的项目中。右键单击Java项目,然后选择“Build Path”->“Configure Build Path”。在“Libraries”选项卡上,你可以添加外部JAR包。 总结 在本文中,我们介绍了如何使用Eclipse进行Java开发。我们学习了如何创建Java项目、创建Java类、编写Java代码、运行Java程序、调试Java程序以及导入外部JAR包。Eclipse具有强大的功能,可以大大提高Java开发的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值