首页 > 其他 > 详细

promise核心 为什么用promise

时间:2020-01-21 00:08:25      阅读:92      评论:0      收藏:0      [点我收藏+]

为什么要用promise

1.使用纯回调函数

先指定回调函数,再启动异步任务

答 1.指定回调函数的方式更加灵活

可以在执行任务前,中,后

2.支持链式调用,解决回调地狱问题

什么是回调地狱:回调函数嵌套使用,下一层回调函数依赖上一层回调函数的结果

解决方案。promise链式

终极解决方案 async/await

async function request() {
  try {
    const result = await dosongthing()
    const newResult = await doThirdThing(result)
    const finalResult = await doThirdThing2(newResult)
  } catch (error) {
    failureCallback(error)
  }
}

如何使用promise?搞清楚语法(API:前后接口)

定一个函数,就是定义一个api。因为就是一个语法

 

1.Promise构造函数:Promise(excutor){}

excutor函数: 同步执行 (resolve, reject) => {}

resolve函数: 内部定义成功时候我们调用的函数 value => {}

reject函数: 内部定义失败时候我们调用的函数 reason => {}

说明: excutor会在Promise呢句立即同步调用,异步操作在执行器中执行

 

2.Promise.prototype.then方法 (onResolved,onRejected)=> {}

onResolved函数:成功时候回调的函数 (value)=> {}

onRejected函数:失败时候回调的函数 (reason)=> {}

返回一个新的promise对象 // 链式调用的一个前提

 

3.Promise.prototype.catch方法 (onRejected)=> {}

onRejected函数:失败时候回调的函数 (reason)=> {}

相当于then(null,onRejected)=> {}

new Promise((a, b) => {
  setTimeout(() => {
    // a(‘ok‘)
    b(‘fail‘)
  }, 0)
}).then(
  value => {
    console.log(‘onResolved1‘, value)
  }
).catch(
  reason => {
    console.log(‘onReject‘, reason)
  }
)

 

4.Promise.all方法 (promise)=> {}

promise: 包含n个promise的数组

//返回一个promise对象

三个请求都成功才有显示 成功

5.Promise.race方法 (promise)=> {}

promise: 包含n个promise的数组

只看第一个先执行完

promise核心 为什么用promise

原文:https://www.cnblogs.com/-constructor/p/12219802.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!