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) // 失败
})

Promise.prototype.then()

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

var p = new Promise(function(resolve, reject){
  resolve()
})
p.then(function(success){
  console.log(success)
}, function(error){
  console.log(error)
})

Promise.prototype.catch()

捕获失败状态

Promise.prototype.finally()

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

Promise.all()

Promise.all([p1, p2, p3]) // p1,p2,p3都为promise对象

Promise.race()

Promise.race([p1, p2, p3]) // p1,p2,p3都为promise对象

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
    })

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

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

    var p = Promise.resolve('hello')
    p.then(function(value){
      console.log(value) // hello
    })
  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)
});
// 出错了
相关文章
阿里商旅-国内商旅界的未来,今天聊聊阿里商旅是如何做业务的
阿里商旅是如何做业务的 基于钉钉的智能移动差旅1.0版本;开放平台对接方案2.0版本
阿里商旅-国内商旅界的未来,今天聊聊阿里商旅是如何做业务的
|
安全 jenkins 持续交付
项目版本管理的最佳实践:云效飞流Flow篇
飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践
5101 0
项目版本管理的最佳实践:云效飞流Flow篇
|
关系型数据库 PostgreSQL
PostgreSQL pg_orphaned扩展
由于种种原因,PostgreSQL可能会产生一些孤儿文件,这些文件会占用磁盘空间,手工查找费时费力还容易出错,pg_orphaned扩展很好的解决了这个问题。
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
10月前
|
人工智能 自然语言处理 数据可视化
校企合作|TsingtaoAI携手潍坊学院,共建AI驱动的党建信息化系统
TsingtaoAI与潍坊学院近日达成合作,正式签署《人工智能党建信息化系统开发》技术开发合同,计划在未来两年内联合开发一套集党员教育、党务管理、党建活动智能化以及数据可视化于一体的智能党建系统。本次合作将充分结合TsingtaoAI在AI大模型领域的技术优势和潍坊学院的学术资源,为推动党建工作的数字化、智能化和高效化注入新的动力。
231 10
|
12月前
|
机器学习/深度学习 数据可视化 IDE
R 语言 必备 十大资源
R 语言 必备 十大资源
R 语言 必备 十大资源
|
12月前
|
机器学习/深度学习 人工智能 搜索推荐
AI时代下的个人发展之路:通过多栈变革实现跨越式成长
随着人工智能(AI)技术的飞速发展,企业和个人面临着前所未有的机遇和挑战。在AI时代,多栈变革成为推动企业和个人发展的关键。对企业而言,AI不仅促进了数据驱动的决策和智能自动化,还推动了产品创新和业务流程优化。而对于个人,AI的崛起提供了通过跨界学习、掌握多项技能及使用AI工具提升效率的机会。本文探讨了AI如何通过多栈变革推动企业和个人的全方位发展,同时也分析了面临的挑战与未来展望。在这个智能化、数据化的时代,只有不断学习与适应的企业和个人,才能抓住AI带来的机遇,迎接更加智能化的未来。
|
供应链 区块链
深入探索区块链技术在供应链管理中的应用
本文通过分析区块链的基本概念、技术特性及其在供应链管理中的创新应用,探讨了区块链技术如何提高供应链的透明度、效率和安全性。文章首先介绍了区块链的定义及工作原理,随后详细阐述了区块链在供应链中的具体应用场景,包括数据共享、货物追踪、合同执行等方面。最后,文章讨论了区块链技术面临的挑战和未来发展趋势,为供应链管理领域提供了新的视角和技术解决方案。
|
安全 Unix Android开发
探索安卓与iOS的安全性差异:技术对比与未来展望
本文旨在深入探讨和比较安卓(Android)与iOS两大移动操作系统在安全性方面的不同之处。随着智能手机在日常生活中扮演着越来越重要的角色,了解这两个系统的安全特性变得尤为重要。通过分析它们的架构、安全机制、隐私保护措施以及更新策略等方面的差异,我们可以更好地理解它们各自的优势和劣势。此外,文章还将展望未来可能的发展趋势,为开发者和用户提供参考。
358 1