Promise总结

简介: Promise是一种异步编程解决方案,es6中原生提供了Promise对象有三种状态:pending、resolved、rejected。状态一旦改变,就不会再变。基本用法var p = new Promise(function(resolve, reject){ resolve('成功') // or reject('失败')})p.

Promise是一种异步编程解决方案,es6中原生提供了Promise对象
有三种状态:pendingresolvedrejected。状态一旦改变,就不会再变。

基本用法

var p = new Promise(function(resolve, reject){
  resolve('成功')
  // or
  reject('失败')
})
p.then(function(result) {
  console.log(result) // 成功
}).catch(function(error){
  console.log(error) // 失败
})
AI 代码解读

Promise.prototype.then()

链式调用,参数为函数,第一个函数得到成功结果,第二个函数得到失败结果

var p = new Promise(function(resolve, reject){
  resolve()
})
p.then(function(success){
  console.log(success)
}, function(error){
  console.log(error)
})
AI 代码解读

Promise.prototype.catch()

捕获失败状态

Promise.prototype.finally()

es2018中添加,无论状态是什么都会去执行

Promise.all()

Promise.all([p1, p2, p3]) // p1,p2,p3都为promise对象
AI 代码解读

Promise.race()

Promise.race([p1, p2, p3]) // p1,p2,p3都为promise对象
AI 代码解读

Promise.resolve()

将现有对象转化为Promise对象

  1. 参数是一个Promise实例,那么Promise.resolve将不做任何修改,直接返回这个实例
  2. 参数是一个thanable对象,具有then方法的对象

    let thanable = {
      then: function(resolve, reject){
        resolve(2332)
      }
    }
    
    let p1 = Promise.resolve(thenable)
    p1.then(function(value) {
      console.log(value) // 2332
    })
    AI 代码解读

    Promise.resolve方法将会把这个对象转化为Promise对象,并立即执行thenable的then方法

  3. 参数不是具有then方法的对象,或者不是对象。是一个原始值,则直接返回Promise对象,状态为resolved

    var p = Promise.resolve('hello')
    p.then(function(value){
      console.log(value) // hello
    })
    AI 代码解读
  4. 不带有任何参数,直接返回一个resolved状态的Promise对象

Promise.reject()

Promise.reject(reason) 方法会返回一个新的Promise实例,状态为rejected

const p = Promise.reject('出错了');
// 等同于
const p = new Promise((resolve, reject) => reject('出错了'))

p.then(null, function (s) {
  console.log(s)
});
// 出错了
AI 代码解读
目录
打赏
0
0
0
0
3
分享
相关文章
阿里商旅-国内商旅界的未来,今天聊聊阿里商旅是如何做业务的
阿里商旅是如何做业务的 基于钉钉的智能移动差旅1.0版本;开放平台对接方案2.0版本
阿里商旅-国内商旅界的未来,今天聊聊阿里商旅是如何做业务的
PostgreSQL pg_orphaned扩展
由于种种原因,PostgreSQL可能会产生一些孤儿文件,这些文件会占用磁盘空间,手工查找费时费力还容易出错,pg_orphaned扩展很好的解决了这个问题。
项目版本管理的最佳实践:云效飞流Flow篇
飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践
4941 0
项目版本管理的最佳实践:云效飞流Flow篇
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
AI时代下的个人发展之路:通过多栈变革实现跨越式成长
随着人工智能(AI)技术的飞速发展,企业和个人面临着前所未有的机遇和挑战。在AI时代,多栈变革成为推动企业和个人发展的关键。对企业而言,AI不仅促进了数据驱动的决策和智能自动化,还推动了产品创新和业务流程优化。而对于个人,AI的崛起提供了通过跨界学习、掌握多项技能及使用AI工具提升效率的机会。本文探讨了AI如何通过多栈变革推动企业和个人的全方位发展,同时也分析了面临的挑战与未来展望。在这个智能化、数据化的时代,只有不断学习与适应的企业和个人,才能抓住AI带来的机遇,迎接更加智能化的未来。
深入探索区块链技术在供应链管理中的应用
本文通过分析区块链的基本概念、技术特性及其在供应链管理中的创新应用,探讨了区块链技术如何提高供应链的透明度、效率和安全性。文章首先介绍了区块链的定义及工作原理,随后详细阐述了区块链在供应链中的具体应用场景,包括数据共享、货物追踪、合同执行等方面。最后,文章讨论了区块链技术面临的挑战和未来发展趋势,为供应链管理领域提供了新的视角和技术解决方案。
探索安卓与iOS的安全性差异:技术对比与未来展望
本文旨在深入探讨和比较安卓(Android)与iOS两大移动操作系统在安全性方面的不同之处。随着智能手机在日常生活中扮演着越来越重要的角色,了解这两个系统的安全特性变得尤为重要。通过分析它们的架构、安全机制、隐私保护措施以及更新策略等方面的差异,我们可以更好地理解它们各自的优势和劣势。此外,文章还将展望未来可能的发展趋势,为开发者和用户提供参考。
177 1
智能化运维:机器学习在故障预测与自动化处理中的应用
随着信息技术的迅速发展,智能化运维成为企业提升效率、降低成本的关键手段。本文将探讨机器学习技术在智能化运维领域的应用,特别是故障预测和自动化处理方面。通过分析相关研究数据和案例,本文旨在揭示机器学习如何优化运维流程,提高系统稳定性和可靠性。
214 27
探索未来编程语言的发展趋势与挑战
随着科技的迅猛发展,编程语言也在不断演变。本文将探讨未来编程语言的发展趋势及面临的挑战,涵盖了人工智能、区块链、量子计算等前沿技术领域,以及如何应对未来编程语言的发展趋势进行探索。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问