promise核心 为什么用promise

Posted -constructor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise核心 为什么用promise相关的知识,希望对你有一定的参考价值。

为什么要用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的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

前端面试题之手写promise

什么时候然后从Promise.all()的子句运行?

到底什么是promise?有什么用promise怎么用

澄清 node.js + promises 片段

promise 核心技术3 使用