zoukankan      html  css  js  c++  java
  • promise注意事项

    1.promise本身是同步的,只有.then .catch是异步的 所以使用时记得把它封装到一个函数里

    2.promise 有 3 种状态:pending、fulfilled 或 rejected。状态改变只能是 pending->fulfilled 或者 pending->rejected,状态一旦改变则不能再变。

    const promise = new Promise((resolve, reject) => {
      resolve('success1')
      reject('error')
      resolve('success2')
    })
     
    promise
      .then((res) => {
        console.log('then: ', res)
      })
      .catch((err) => {
        console.log('catch: ', err)
      })
    //结果为then:success1

    3.promise 可以链式调用。promise 每次调用 .then 或者 .catch 都会返回一个新的 promise,从而实现了链式调用。

    Promise.resolve(1)
      .then((res) => {
        console.log(res)
        return 2
      })
      .catch((err) => {
        return 3
      })
      .then((res) => {
        console.log(res)
      })
    //结果为1 2

    4..then 或者 .catch 中 return 一个 error 对象并不会抛出错误,所以不会被后续的 .catch 捕获,需要改成其中一种:

    return Promise.reject(new Error('error!!!'))
    throw new Error('error!!!')

    5.then 或 .catch 返回的值不能是 promise 本身,否则会造成死循环。类似于:

    process.nextTick(function tick () {
      console.log('tick')
      process.nextTick(tick)
    })

    6..then 或者 .catch 的参数期望是函数,传入非函数则会发生值穿透。

    Promise.resolve(1)
      .then(2)
      .then(Promise.resolve(3))
      .then(console.log)
    //结果为1
  • 相关阅读:
    FSCapture 取色工具(绿色版 )
    Java EE.JavaBean
    Java EE.JSP.内置对象
    Java EE.JSP.动作组件
    Java EE.JSP.指令
    Java EE.JSP.脚本
    21、多态与多态性、内置方法、反射、异常处理
    20、继承的应用、super、组合
    19、property、绑定方法(classmethod、staticmethod)、继承
    18、类
  • 原文地址:https://www.cnblogs.com/jiangxiaoming/p/13620731.html
Copyright © 2011-2022 走看看