promise

作者: 练习时长2年半的个人练习生 | 来源:发表于2020-08-25 09:48 被阅读0次
    什么是promise

    一个实例化的promise 表示一个未来完成/拒绝的占位符。

    new Promise

    new Promise((resolve,reject)=>{})
    resolve 表示成功时调用
    reject 拒绝时调用

    三个状态 :

    Pending Fulfilled Rejected
    只有 Pending 可以转换为 Fulfilled 或 Rejected ,其他的不能相互转换。单向的。

    Promise.resolve()

    用来包装生成promise 如果传入值为thenable 会返回 thenable ,如果传入的是普通值,返回一个成功态结果为这个值的promise

    Promise.reject()

    同上相反

    • Promise的链式调用

    then

    then(()=>{},()=>{}) 执行后会默认返回一个promise
    无论是在第一个函数,还是第二个函数 return 都会以成功态生成一个promise 传递下去

    then 拒绝态如果不处理,会一直传递下去,如果中间再出现错误,新的错误覆盖旧的错误
    Promise.race([p,1,p2])

    如果有一个执行成功或失败,就采用这个promise的结果

    Promise.all([])

    全部为成功态,会返回一个成功态的promise,onResolve参数为数组形式结果。如果有一个拒绝。就会以拒绝态返回那个拒绝的promise

    回调函数:当函数执行成功后,会将它的回调函数添加到任务队列的尾部,等到其他任务执行完后。开始执行他的回调函数
    promise.catch 和 promise.then()的拒绝函数是等价的

    promise.resolve 参数有三种类型 :1、prommise类型。直接返回这个promise
    2、thenable 对象。把这个thenable对象包装成promise对象, promise 成功与拒绝,取决于thenable内部怎么调用
    3、 普通值。包装后,返回成功状态的 这个值作为promise成功状态的参数

    如果执行器内部发生错误。 promise的错误处理函数会直接调用

    Promise 发生错误时,如果不进行错误处理程序 。不会提示错误信息。 这是 js 唯一没有要求强制报错的地方。因此一定要对promise进行错误处理。

    浏览器 有两个事件 可以 识别未处理的拒绝状态的promise
    then方法接受的参数是函数,而如果传递的并非是一个函数,它实际上会将其解释为then(null),这就会导致前一个Promise的结果会传递下面。

    相关文章

      网友评论

          本文标题:promise

          本文链接:https://www.haomeiwen.com/subject/dyqurktx.html