关于Promise的问题

134 阅读1分钟

Promise是什么?

Promise是用来处理异步的地狱回调的问题而产生的。

什么是地狱回调?

当想要在异步操作中实现前一个函数完成后才再将结果放入到下一个异步中进行使用,当这种情况变多时,会造成混乱

Promise的特征

Promise有三种状态:

  • pending 对象初始化状态 pending-->fulfilled/rejected
  • resolve 成功之后.then
  • reject 失败之后.catch Promise的.then()方法在每次调用时都会返回一个新的Promise对象,所以可以使用链式的写法。

Promise.resolve()相当于resolve成功状态返回的结果 (fulfilled)

Promise.reject()相当于reject失败状态返回的结果 (rejected)

Promise.all() 以promise对象的数组为参数,只有全部为resolve时才能调用,通常使用.all来执行多个异步操作

Promise.race() 以promise对象的数组为参数,当其中任意一个进入fulfilled状态或者是rejected状态,都会继续之后的异步操作

Generator(生成器)

当Promise的then操作过度多时会造成新的流程问题,所以需要使用到Generator生成器

Generator一种有效利用内存的机制,一边循环一边计算生成值的机制。

生成器即在函数名之前添加*,利用yield返回函数中的值,但是只是暂停函数的运行而不是终止函数。再使用next()获取第一次暂停返回的值。

由于generator太复杂了,后期推出了async/await来封装异步。