zoukankan      html  css  js  c++  java
  • promise规范之部分总结

    1. promise构造函数中的reject和resolve是微任务, 即先执行resolve后的代码,再执行之前通过then注册的代码

    2. 对于状态已变更的promise来说,比如promiseA已经是fullfilled,promiseA.then(function(){})依然将在微任务里执行

    __________________总结:then里的回调函数永远是异步的microtask

    3. then总是返回一个新的promise

    4. catch相当于then(undefined, function(){})  每个then里的两个回调函数相当于新promise的构造函数(二选一),链式调用时,后一个仅取决于前一个promise的状态

    举例: A = new Promise(function(resolve, reject){reject('a')})

    B=A.catch(function(error){return error})

    C=B.then(function(res){console.log(res)},function(){console.log('error')})  // 打印 a

    可以看到,A是failed,在B中catch了错误a,但是B作为一个new Promise,它里面没有扔出错误,是被resolve了(只有B的函数自己执行出错才会被reject),所以传到C时,执行的是第一个参数的成功回调函数,A的状态已经丢失了。

    因此,链式调用时,catch应该放在最后,then里的函数不传,则会传递前一个promise的状态,最后一个catch可以捕捉到前面任意环节出的错

    5. promise的构造函数被try..catch包裹着,如果在resolve之前抛出了error,就会直接reject,后面的resolve不起作用,因为promise的状态一经确定不会更改。

  • 相关阅读:
    文档视图
    引入缓冲池技术
    数据库访问与查询
    OnInitialUpdate函数
    显示股票视图的全局函数
    切换视图的核心代码
    GuiEdit的使用
    操作方法
    SQL 使用 解析
    调用API 实现 窗体 拖动
  • 原文地址:https://www.cnblogs.com/natsu07/p/10371586.html
Copyright © 2011-2022 走看看